Már régebben is megfigyeltem, hogy az Apache .htaccess feldolgozása nem éppen korrekt. Félek, most ismét egy ilyen estebe csöppentem bele.
Egy többdomaines környezetben az egyik VirtualHost a .htaccess fájlban két rewriteRule-t is használ:
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://www.domain.hu/$1 [L]
RewriteCond %{HTTP_HOST} !^www.domain.hu [NC]
RewriteRule ^(.*)$ https://www.domain.hu/$1 [L]
Továbbá a VirtualHost-ban van egy ScriptAlias is definiálva a domainre:
ScriptAlias /mappa/ /usr/lib/cgi-bin/
ScriptAlias /mappa /usr/lib/cgi-bin/
Na, most az a szépsége ennek a cgi scriptnek, hogy csak a domain.hu kérelemmel fut. (Nem általam írt, nem lehet belenyúlni.) Ha a kérelem www.domain.hu/mappa/, akkor elhasal.
Ezt kellene megoldani .htaccess-ből, de nekem eddig nem sikerült.
A hivatalos megoldások nem működnek, mindig 404 errort kapok.
1:
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_URI} !^/mappa
RewriteRule ^(.*)$ https://www.domain.hu/$1 [L]
RewriteCond %{HTTP_HOST} !^www.domain.hu [NC]
RewriteCond %{REQUEST_URI} !^/mappa
RewriteRule ^(.*)$ https://www.domain.hu/$1 [L]
2:
RewriteRule ^(mappa)($|/) - [L]
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://www.domain.hu/$1 [L]
RewriteCond %{HTTP_HOST} !^www.domain.hu [NC]
RewriteRule ^(.*)$ https://www.domain.hu/$1 [L]
Ha az eredeti két szabályt kiszedem a .htaccess fileból, és beírom a domain.hu/mappa címet, remekül megy minden.
Ha csak a második szabályt szedem ki, és beírom a https://domain.hu/mappa címet, akkor is remekül megy. Tehát nekem elég a második szabályra egy működő megoldás, csak legyen cím, amivel el lehet érni a mappa scriptet.
Ötlet is érdekel a megoldásra, és magyarázat is, hogy hol rontom el.