TechnicPack / TechnicSolder

PHP web app that brings differential updates to the Technic Launcher and Technic Platform
https://docs.solder.io/
Other
169 stars 167 forks source link

URLs with index.php result in 404 #494

Closed Nightreaver closed 3 years ago

Nightreaver commented 8 years ago

Hello

so my server is running for a while now, I did a server update to debian jessie it seems like the redirect broke

I can access

http://my.server/dashboard

but not

http://my.server/index.php/dashboard

as technic-website still uses .../index.php/... this will also result in 404 http://my.server/api is working

I tried to work around this with changing the .htaccess but no useful result. when I remove the .htaccess none of the above is working.

PHP 5.6.14-0+deb8u1 Apache/2.4.10 (Debian) latest solder 0.7.2.2

Cheers


<VirtualHost *:80>
ServerAdmin xxx
ServerName xxx
ServerAlias xxx

DocumentRoot /var/www/technic/public/

LogLevel error
LogLevel error rewrite:trace6
ErrorLog ${APACHE_LOG_DIR}/minecraft_technic_err.log
CustomLog ${APACHE_LOG_DIR}/minecraft_technic.log "combined"

HostNameLookups off
UseCanonicalName off
ServerSignature On

AccessFileName .htaccess
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

<Directory "/var/www/technic/public/">
        AllowOverride All
        Order allow,deny
        Allow from all
</Directory>

</VirtualHost>

spannerman79 commented 8 years ago

I can access

http://my.server/dashboard

but not

http://my.server/index.php/dashboard

as technic-website still uses .../index.php/

Er no it doesn't.

My access is http://my.server/login to login and dashboard is http://my.server/dashboard

Whatever setup you had before was borked

Nightreaver commented 8 years ago

This is my technic response

Client error response [status code] 404 [reason phrase] Not Found [url] http://my.server/index.php/api/verify/2c2ea271b623d1d924dec8c4f...3735f0c18a27532edf2531

spannerman79 commented 8 years ago

http://docs.solder.io/docs/example-web-server-configs#apache

Do not modify DocumentRoot to append /index.php but read "Rewrite Engine on Apache" section below

Nightreaver commented 8 years ago

so this means, without mod-rewrite, I should be able to use index.php normally?

spannerman79 commented 8 years ago

Usually you use mod-rewrite to create a clean URL but overall this isn't a solder issue this is an issue on how you have setup your webserver and how you have your solder api url entered into the technic website.

In short how you have it setup now it's clean, using /index.php, or without mod-rewrite is messy

Nightreaver commented 8 years ago

but that my solder breaks without htaccess (that i can't even access index.php/dashboard) is a local issue?!

but solder itself should work with both? then I can try to debug that, i just don't want hunting ghosts

when i use http://my.server/index.php it redirects to http://my.server/index.php/dashboard and fails with 404... what can be a reason of index.php/dashboard to be 404? i have no errors in my log file.. just

"GET /index.php HTTP/1.1" 302 2012 "-" "..." "GET /index.php/dashboard HTTP/1.1" 404 515 "-" "..."

it also seems that no cache files are generated

Nightreaver commented 8 years ago

okay, i fixed it with updating the solder-config inside my technic-website account (remove index.php there) and then everything works fine again but I'm still unable to figure out why its not working with index.php - if you ask me, support for "index.php/.." got removed

the update from technic seem to take some time to refresh, even after the change the clients still tried to use the index.php thingy... i worked around this with adding lines to .htaccess

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On
    RewriteBase /

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
    RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>