Autor Zpráva
Camo
Profil
Zdravím.
Ja viem, že som tu zase s tým rewritom...

Tak problém je v takýto. Ak mám adresu: host.sk/dir/dir2/nieco
a očakávam že sa to prepíše na: www.host.sk/dir/index.php?url=dir2/nieco
všetko funguje až na prípad, keď adresa vyzerá takto: host.sk/dir/dir2
Ide o prípad, keď dir2 je skutočný adresár. A opera dragonfly ukazuje, že sa to nepodstrkuje ale presmerováva.
Vtedy to neviem prečo dáva takýto výsledok: www.host.sk/dir/dir2/url=dir2 sa strieda s www.host.sk/dir/dir2?url=dir2 kým to Operu neprestane baviť. Cyklí sa to jedna radosť.... Pridal som aj podmienku na QUERY_STRING, ale nepomohlo to.
.htaccess vyzerá takto:
RewriteEngine on

RewriteBase /dir

#ignoruj vsetky existujuce soubory (php, img, css, js)
RewriteCond %{REQUEST_FILENAME} !-f

#ignoruj vsetky existujuce adresare
#RewriteCond %{REQUEST_FILENAME} !-d

#prida www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule (.*)$ http://www.%{HTTP_HOST}/myCMS/$1 [R=301,L]

#odstrani lomitko na konci
RewriteRule ^(.+)/$ $1 [R=301,L]

#prepis na url=var a podstrcenie
RewriteCond %{QUERY_STRING} !url
RewriteRule (.*)$ index.php?url=$1 [L]

Nechápem, ako to, že v tej problémovej adrese ostane to dir2 v url a neosekne sa ani lomítko(resp. raz sa osekne a raz nie, keď sa to cyklí). Ignoruje to poslednú aj predposlednú podmienku podľa mňa.
Vie mi to niekto vysvetliť?
Ďakujem!
Kajman
Profil
Cyklí nejspíše pravidlo na řádku 16 v kombinaci s defaultní vlastností mod_dir, že přidává lomítko pro adresy ukazující na adresář. Zkuste to druhé chování vypnout...

DirectorySlash Off
Camo
Profil
Kajman:
Klobúk dole. Funguje to. Ale som z toho úplne mimo. Lebo v Opere vidieť, že raz príde presmerovanie na adresu s lomítkom a raz bez neho.
Celý ten chybný proces sa dá vidieť v Opera dragonfly na tejto adrese.
A keď sa tam doplní hocičo tak to funguje link
IdemeNaHavaj
Profil
Môžeš prosím hodiť celý obsah .htaccess?
Camo
Profil
IdemeNaHavaj:
Options +FollowSymlinks

#mod_dir robi bordel s existujucimi adresarmi ako OBSAH/
DirectorySlash Off

RewriteEngine on

RewriteBase /myCMS

#ignoruj vsetky existujuce soubory (php, img, css, js)
RewriteCond %{REQUEST_FILENAME} !-f
#ignoruj vsetky existujuce adresare
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule (.*)$ http://www.%{HTTP_HOST}/myCMS/$1 [R=301,L]

#ignoruj vsetky existujuce soubory (php, img, css, js)
RewriteCond %{REQUEST_FILENAME} !-f
#ignoruj vsetky existujuce adresare
RewriteCond %{REQUEST_FILENAME} !-d

#odstrani sa lomitko na konci
RewriteRule ^(.+)/$ $1 [R=301,L]

#ignoruj vsetky existujuce soubory (php, img, css, js)
RewriteCond %{REQUEST_FILENAME} !-f
#ignoruj vsetky existujuce adresare
RewriteCond %{REQUEST_FILENAME} !-d

#prepis na ?url=var a podstrcenie
RewriteRule (.*)$ indexTest.php?url=%{REQUEST_FILENAME} [L,QSA]

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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