Autor Zpráva
Ni7R0
Profil
Řeším problém s přesměrováním několika domén do adresářů pro příslušnou doménu. Adresářová struktura je následující:
/
- log
- www
- - subdomena1
- - subdomena2
- - www.domena1.cz
- - www.domena2.eu
- - www.domena3.com
atd...


Všechny další domény jsou přidruženy k první doméně jako aliasy, ale já potřebuji, aby se chovaly jako nezávislé domény. Do nedávna fungoval bezchybně následující htaccess ve složce www, který přepisoval aliasy tak, že při požadavku na http://www.domena2.eu/ se zobrazil obsah adresáře /www/www.domena2.eu/ a problémy nebyly ani s dalšími soubory. Nyní se někdy ale stane (např. když se do hry zapojí mod_speling, který nejde vypnout), že se stránka přesměruje na adresu http://www.domena2.eu/www.domena2.eu/soubor.php, což přinejmenším působí nevzhledně, neberu-li v potaz další problémy (SEO apod.). Nejlepší by bylo toto řešit přes vhosts, ale na podpoře (Ignum) mi bylo řečeno, že individuální změny ve vhosts mi neudělají. Zkoušel jsem už všechno možné, ale nic definitivního jsem neobjevil...

RewriteEngine On
RewriteBase  /

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [L]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [L,QSA]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ www.%{HTTP_HOST}/$1 [L,QSA]
Kajman_
Profil *
mod_speling, který nejde vypnout

Nejde vypnout nebo ho nechcete vypnout?

CheckSpelling Off
RewriteEngine On
RewriteBase  /
...
Ni7R0
Profil
Nejde, když nastavím tuhle direktivu v htaccessu, server začne házet 500. Ale raději bych našel řešení, které ten jev odstraní ve všech případech...
Davex
Profil
Pokud je soubor .htaccess v adresáři www, tak jsou pravidla v pořádku. Zkuste doplnit do přepisovacích pravidel úvodní lomítko (nespoléhat na RewriteBase) a doplnit flag PT:
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ /%{HTTP_HOST}/$1 [L,QSA,PT]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ /www.%{HTTP_HOST}/$1 [L,QSA,PT]

Pokud to fungovalo a znenadání přestalo, tak bude asi chyba v konfiguraci Apache, kterou by měl řešit hosting. Mám určitou představu o příčině problému, ale mod_speling nepoužívám, takže se toto chování pokusím někdy otestovat.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0