Autor Zpráva
Khamos
Profil *
Zdravím, mám velice zajímavý problém, technická podpora Onebitu taky neví, co s tím.

Potřebuji, aby byl funkční tvar adresy domena.cz/vyhledat/Skoda Fabia 1.2/ - samozřejmě předtím použiju rawurlencode.
Bordel dělá ta tečka - háže to potom chybu 404 - neznámá stránka. Když napíšu jen /Skoda Fabia 12/ tak v pohodě.

Takže jsem chtěl přidat tečku do mod_rewrite.

Aktuálně vypadá takto:

RewriteEngine on

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

# \x80-\xff - česká diakritika pro mod_rewrite
# \x40, \x20 - zavináč, mezera pro mod_rewrite

RewriteCond %{REQUEST_URI} ^([a-zA-Z0-9\-/\x80-\xff\x40\x20]*)$
RewriteRule ^(.*)$ /index.php?odkud=root&link=$1 [QSA,L]

To je verze bez tečky, kterou používáme doteď a funguje. Jakmile do RewriteCond přidám tečku, server vyhodí chybu 500, a to i při přístupu do rootu domény, tzn. mujweb.cz.
Změněný kód:

RewriteCond %{REQUEST_URI} ^([a-zA-Z0-9\-/\x80-\xff\x40\x20\.]*)$

Zkoušel jsem i encodovanou tečku, nic:

RewriteCond %{REQUEST_URI} ^([a-zA-Z0-9\-/\x80-\xff\x40\x20\x2e]*)$

Nevíte někdo co s tím? :(
Davex
Profil
Zacyklí se to, protože regulárnímu výrazu s tečkou vyhoví i jméno skriptu index.php. Musí se přidat podmínka, která zajistí jen jeden přepis nebo nepřepisování existujících souborů.

RewriteCond %{ENV:REDIRECT_STATUS} =""

# nebo

RewriteCond %{REQUEST_FILENAME} !-f


Pravidlo se také může zjednodušit:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9\-/\x80-\xff\x40\x20\.]*)$ /index.php?odkud=root&link=$1 [QSA,L]
Khamos
Profil *
Achjo, taková blbost... Díky moc!!

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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