Autor Zpráva
Manny
Profil *
Asi triviální problém. Nefunguje mi přepis url.
mod_rewrite v podobě:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/.]+)/?$ ?str=$1 [L,QSA]


url v podobě:
http://www.inverso.cz/index.php?str=uvod

Můžete mi někdo pomoct. Moc to zatim nechápu.
Davex
Profil
Jsou splněny všechny podmínky pro práci s mod_rewrite?
Manny
Profil *
Davex:
Já myslím, že jo. Třeba .htacces na chybovku 404 mi funguje.
Kajman_
Profil *
Pro test, jestli to máte vše potřebné zapnuté a povolené, zkuste ten první příklad
http://diskuse.jakpsatweb.cz/?action=vthread&forum=31&topic=97298#1
Manny
Profil *
Test jsem vyzkoušel a přesměrování funguje. Už nevím.
Manny
Profil *
Napadlo mě, jestli není problém v tom, že index.php a ostatní jsou na hostingu vnořeny ještě do adresáře www.
Kajman_
Profil *
Nepomůže zmínit přímo název souboru?
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/.]+)/?$ index.php?str=$1 [L,QSA]


Jestli ne, tak bych zkusil ještě přidat úvodní lomítko.
Mannny
Profil *
Aúúú, nefunguje. Ani s lomítkem před index.php.:-(((
Kajman_
Profil *
Myslel jsem jiné lomítko...

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?([^/.]+)/?$ index.php?str=$1 [L,QSA]
Manny
Profil *
ne, ne a ne. Asi to tak nechám. Díky za snahu.
Davex
Profil
Pokud je skript index.php v podadresáři www (jeho kompletní URL je "http://www.example.com/www/index.php"), tak bude nutné změnit
RewriteBase /www/
Manny
Profil *
To už mě taky napadlo, ale pořád nic.
Davex
Profil
Ještě se hloupě zeptám - je zapnuto FollowSymlinks? Kajmanův zápis určitě funguje - nejsou tam ještě nějaká další pravidla se kterými by to mohlo kolidovat?
Manny
Profil *
Nevím co je FollowSymlinks, zase tak se v tom nevyznám. Ale v rootu webu, kde je adresář www se všemi soubory je tenhle .htacces
Options -Indexes

ErrorDocument 404 http://404.kapusta.cz
ErrorDocument 403 http://403.kapusta.cz

php_value memory_limit 32M
php_value post_max_size 32M

php_value upload_max_filesize 32M
php_value post_max_size 32M

Což by nemělo ničemu vadit (myslím)
Další pravidla tam nejsou.
Davex
Profil
Nevím co je FollowSymlinks
To je ale chyba - přečti si odkaz v mém prvním příspěvku [#2].
Manny
Profil *
Celé to vypadá teda takhle:
Options +FollowSymlinks
RewriteEngine on
RewriteBase /www/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?([^/.]+)/?$ index.php?str=$1 [L,QSA]

Jenže pořád nic.
Davex
Profil
A s tímto?
RewriteBase /
Manny
Profil *
Ne! Ani s www/ ani bez. To přece není možný.
Davex
Profil
Teď už nevím, v čem by mohl být problém. Pro otestování vyzkoušej tuto minimalizovanou variantu:
Options  +FollowSymlinks
RewriteEngine  on
RewriteBase  /
RewriteCond  %{ENV:REDIRECT_STATUS}  =""
RewriteCond  %{REQUEST_FILENAME}  !-f
RewriteRule  ^(.*)$ index.php?str=$1  [L,QSA]

Případně potom ještě bez podmínky RewriteCond.

edit: Dopsal jsem ještě první podmínku RewriteCond, aby se to nezacyklilo.
Manny
Profil *
Bez RewriteCond mi to vypíná css.
Davex
Profil
Já vím, cílem je dopracovat se k problematickému řádku.
Manny
Profil *
S tou další podmínkou se nic neděje.
Davex
Profil
Teď už to ale funguje: http://www.inverso.cz/uvod
Manny
Profil *
No tento odkaz ano. Ale další stránky jsou pořád s paramtrem str.
Davex
Profil
Pokud ručně upravím URL, tak mi kromě "komiksy" fungují všechny odkazy z hlavního menu. Přepis komiksů nefunguje kvůli tomu, že tam je adresář se stejným jménem - to by měla vyřešit změna nastavení doplňování lomítka a kontrola existence adresáře
Options  +FollowSymlinks
DirectorySlash  Off
RewriteEngine  on
RewriteBase  /
RewriteCond  %{ENV:REDIRECT_STATUS}  =""
RewriteCond  %{REQUEST_FILENAME}  !-d
RewriteCond  %{REQUEST_FILENAME}  !-f
RewriteRule  ^(.*)$ index.php?str=$1  [L,QSA]
Manny
Profil *
Ano, "ruční" úprava funguje, ale já jsem chtěl, aby se to v adresním řádku zobrazovalo tzv. "seo friendly" automaticky.
Davex
Profil
Mod_rewrite nepřepisuje odkazy na stránce - odkazy se musí změnit ve skriptu, který generuje stránky.
Mannny
Profil *
Možná jsme si nerozuměli. Chtěl jsem url ve formátu:
http://www.inverso.cz/uvod

a ne
http://www.inverso/index.php?str=uvod
Davex
Profil
Mannny:
Chtěl jsem url ve formátu
Kde? V odkazech na stránce nebo jinde? Aby to celé správně fungovalo tak je potřeba:

1. změnit vytváření odkazů na novou podobu ve skriptu, který generuje stránky
2. nastavit podstrkávání z nové podoby (virtuálního) URL na zpracovávající skript (to už máš)
3. nastavit přesměrování ze starých URL na nová HTTP statusem 301, aby lidé přicházející přes externí odkazy neskončili ve slepé uličce
Manny
Profil *
Stačí mi to v adresním řádku.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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