| 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: 14 let
|
|||
0