Autor | Zpráva | ||
---|---|---|---|
maks Profil |
#1 · Zasláno: 12. 9. 2010, 22:38:07 · Upravil/a: maks
Ahoj,
přesměrovávání - mod_rewrite není můj přítel (bohužel), potřebuji přesměrovat/podstrčit?, zkrátka změnit název složky v URL. Zápis mám následující: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ index.php?page=$1 [QSA] #rewrite z /index.php?page=abc na /abc/... funguje RewriteCond %{QUERY_STRING} slozka RewriteRule nova-slozka/(.*) slozka/$1 #pokud výše přesměrovaná URL obsahuje "slozka" (bude na začátku, ale pravidlo jí může hledat klidně kdekoliv), přepis jí. #Je to tedy závislé na rewritu výše (nebo je chyba tady a musím pracovat s původní adresou?). #zkousel jsem pridat i [R] a [R=302], nějak v tom tápu Čeho chci docílit? Nyní se mi obsah zobrazuje na http://domena.cz/slozka/stranka.html (A) a já ji potřebuji zobrazit na http://domena.cz/nova-slozka/stranka.html (B). Adresa B po zadání nefunguje. Ideálně po zadání první adresy (A), aby se změnil i adresní řádek na (B). Toto když nebude, nic se neděje, odkazy ve tvaru A nebudou fungovat, google se na ně tedy nemá jak dostat. Je to pro někoho prkotina, ale mě tohle moc pomůže. Děkuji všem. |
||
Časová prodleva: 3 dny
|
|||
mattyZEM Profil |
#2 · Zasláno: 15. 9. 2010, 23:34:48 · Upravil/a: mattyZEM
Přidal bych ^$ + RewriteBase a přesunul podmínku na začátek:
RewriteEngine On RewriteBase / RewriteCond %{QUERY_STRING} slozka RewriteRule nova-slozka/(.*) slozka/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ index.php?page=$1 [QSA] #rewrite z /index.php?page=abc na /abc/… funguje Snad to pojede. |
||
maks Profil |
#3 · Zasláno: 16. 9. 2010, 07:58:42
mattyZEM:
„Přidal bych ^$“ kam? „Snad to pojede.“ bohuzel takhle to nejede. Při zadání domena.cz/nova-slozka/obsah/ se požadovaný obsah nezobrazí. domena.cz/slozka/obsah/ funguje. |
||
mattyZEM Profil |
#4 · Zasláno: 16. 9. 2010, 14:56:00
Tak jinak, zapsal bych to tak, jak to používám já.
RewriteEngine On RewriteBase / RewriteRule ^nova-slozka/(.*)$ slozka/$1 [L] RewriteRule ^(.+)$ index.php?page=$1 [L] |
||
maks Profil |
#5 · Zasláno: 17. 9. 2010, 05:23:55 · Upravil/a: maks
mattyZEM:
„Tak jinak, zapsal bych to tak, jak to používám já.“ super, to je ono :-) Teď mě ještě napadlo, že bych tam mohl udělat podmínku ještě pro jednu složku navíc, ale ta mi připsat už nejde. Můžu tě poprosit o pomocnou ruku ještě jednou? Jelikož L je tipuji LAST, zkusil jsem ho odmazat a zapsat to následujícím způsobem: RewriteEngine On RewriteBase / RewriteRule ^nova-slozka/(.*)$ slozka/$1 [L] #tady jsem zkousel [L] odebrat, nepomohlo RewriteRule ^nova-podslozka/(.*)$ podslozka/$1 [L] #tady jsem zkousel se striskou, bez ni, s nadrazenou slozkou #puvodni i prepsanou (tedy slozka i nova-slozka), nic :( #potrebuji ted mam po prvnim rewritu URL www.domena.cz/nova-slozka/podslozka/stranka #dostat www.domena.cz/nova-slozka/nova-podslozka/stranka. Tyhle podsložky tam budou asi # 3 různé, to si tam vyjmenuji (z podslozka->nova-podslozka, fold1->fold2, atp, každý bude mít svůj řádek předpokládám). Ale jaký? RewriteRule ^(.+)$ index.php?page=$1 [L] |
||
mattyZEM Profil |
#6 · Zasláno: 17. 9. 2010, 06:17:22 · Upravil/a: mattyZEM
Pak ale to, co uvádíš musí a nemůže jet.
1) Musí. nova-slozka má za lomítkem nastavené všechno, takže půjde nova-slozka/podslozka/cokoliv.php, ale bude to v slozka/podslozka/cokoliv.php 2) Nemůže, jelikož druhé pravidlo nijak nenavazuje na první, tudíž je nutno napsat tuto (novou) podmínku na začátek a jinak (přidat i to "nova-slozka/"). RewriteEngine On RewriteBase / RewriteRule ^nova-slozka/nova-podslozka/(.*)$ podslozka/$i [L] RewriteRule ^nova-slozka/druha-podslozka/(.*)$ podslozka/$i [L] RewriteRule ^nova-slozka/(.*)$ slozka/$1 [L] RewriteRule ^(.+)$ index.php?page=$1 [L] |
||
maks Profil |
#7 · Zasláno: 17. 9. 2010, 06:23:06
mattyZEM:
„tudíž je nutno napsat tuto (novou) podmínku na začátek a jinak (přidat i to "nova-slozka/").“ nová podmínka mi byla jasná, i ten začátek jsem myslel, že by tam měl být. Zkoušel jsem. Jen jsem to psal pod to, myslel jsem, že to funguje následujícím způsobem. Nejprve přepiš první složku. Ze vzniklé URL přepiš druhou složku (proto jsem to zkoušel i bez stříšky, která značí začátek řetězce). Teď to funguje, dík moc. |
||
Časová prodleva: 14 let
|
0