Autor | Zpráva | ||
---|---|---|---|
lokix Profil |
#1 · Zasláno: 13. 8. 2012, 09:59:56
Zdravím všechny zde na fóru,
chtěl bych požádat o radu případě nakopnutí jak sprovoznit přepis url adres na více podmínek. Tedy page=neco na neco.html zvládám, index.php?kategorie=neco2 na neco2(kategorie) taky, ale nevím jak skombinovat pravidla pro zápis jak index.php?kategorie=neco tak i pro index.php?kategorie=neco&read=nejaky-vyrobek. (neco2/nejaky-vyrobek) To poslední mi né a né jít. Používám .htaccess a mod_rewrite funguje. Děkuji všem za snahu. |
||
Joker Profil |
lokix:
Podle mého názoru je nejlepší si udělat jednoduchý univerzální .htaccess s pravidlem: Pokud daná stránka na webu neexistuje, přesměruj na index.php a do nějakého parametru mu dej celou zadanou adresu. Tedy například (web)/neco/necojineho/jestedalsi → (web)/index.php?url=neco/necojineho/jestedalsi O zbytek se pak postará PHP. Viz také MOD_REWRITE - jak začít?. Dodatek: My vlastně ten htaccess máme i v FAQ u konfigurace webového serveru. |
||
lokix Profil |
Joker:
Děkuji, toto chápu, ale je to pokud tento příklad chápu na jiný mechanizmus url než mám já. Mé url mám vnitřně web.cz/index.php?kategorie=nejaka-kategorie&read=nejaky-vyrobek a z toho potřebuji dostat web.cz/nejaka-kategorie/nejaky-vyrobek. Lze to udělat nějak jinak než změnou logiky url v mém projektu? Můj .htaccess: php_flag display_errors On RewriteEngine On RewriteBase / # přesměrování na variantu s www a odstranění index.php RewriteCond %{HTTP_HOST} =web.cz RewriteRule ^index\.php|(.*)$ http://www.web.cz/$1 [R=301,L] # přesměrování na URL bez parametru RewriteCond %{QUERY_STRING} ^kategorie=([^&]+)$ RewriteRule ^index\.php|$ %1? [R=301,L] # # přesměrování na URL bez parametru 2 RewriteCond %{QUERY_STRING} ^page=([^&]+)$ RewriteRule ^index\.php$ %1.html? [R=301,L] RewriteRule ^([^/]+)\.html index.php?rw=1&page=$1 [L,QSA] # # neexistujícím souborům podstrčit skript index.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)$ index.php?rw=1&kategorie=$1 [L,QSA] #RewriteRule ^([^/]+)/([^/]+)?/?$ ?kategorie=$1&read=$2 // Tento zápis nefunguje. |
||
lokix Profil |
#4 · Zasláno: 13. 8. 2012, 19:19:42
Nechci schválně oživovat téma, ale neporadil by mi někdo jak se poprat s tímto .htaccess abych nemusel měnit struktůru všech url co už mám v tomto zaběhnutém webu, který má mnoho produktů? Do budoucna bych určitě zkusil řešení od Joker, ale teď mě spíš tlačí moc práce a žádný čas. Ale rozhodně děkuji Jokerovi za pomoc.
|
||
lokix Profil |
#5 · Zasláno: 16. 8. 2012, 03:10:19
Zdravím,
tak jsem hledal a zkoušel déle a snad jsem už natrefil na možný rewrite zápis, ale má to jednu divnou chybu: RewriteEngine On RewriteBase / # přesměrování na variantu s www a odstranění index.php RewriteCond %{HTTP_HOST} =web.cz RewriteRule ^index\.php|(.*)$ http://www.web.cz/$1 [R=301,L] # # přesměrování na URL 1 RewriteCond %{QUERY_STRING} ^page=([^&]+)$ RewriteRule ^index\.php$ %1.html? [R=301,L] RewriteRule ^([^/]+)\.html index.php?rw=1&page=$1 [L,QSA] # # přesměrování na URL 2 RewriteCond %{QUERY_STRING} ^kategorie=([^&]+)&read=(.*)$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !^/(css|imgs)/ RewriteRule ^index\.php|$ %1/%2? [R=301,L] RewriteRule ^([^/]+)/([^/]+)$ index.php?rw=1&kategorie=$1&read=$2 [L,QSA] # přesměrování na URL 3 RewriteCond %{QUERY_STRING} ^kategorie=([^&]+)$ RewriteRule ^index\.php|$ %1? [R=301,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)$ index.php?rw=1&kategorie=$1 [L,QSA] Vše se tváří dobře a jak css tak obrázky mám v adrese s / na začátku, ale stačí abych dal f5 nebo ctrl + f5 a jsem z části nebo úplně bez stylů i obrázků. Asi někde něco cyklím nebo špatně přesměruju, ale už opravdu nevím. Moc bych byl vděčen za každou dobrou duši co by mi pomohla. |
||
Časová prodleva: 12 let
|
0