Autor | Zpráva | ||
---|---|---|---|
Yuhů Profil |
#1 · Zasláno: 19. 3. 2005, 03:02:42 · Upravil/a: Yuhů
Dámy a pánové, doufám, že mi někdo konečně pomůžete. Jsem z toho už úplnej magor. Potřebuju jasně slyšet, jak to vyřešit, nebo že to nejde. Mám následující zadání. Potřebuju, aby:
odkazy vedly na url: /index.php?clanek=12345 server, pokud dostane požadavek na tuto stránku, přesměroval na /clanek-12345 a následně při požadavku na ten článek s URL /clanek-12345 aby vrátil OBSAH, který předtím byl na /index.php?clanek=12345 Jestli máte ten pocit, že to bude cyklit, tak já ten pocit mám taky. Ale podobnou funkčnost potřebuju pro tuto diskusi. O mod_rewrite jsem už četl tuny chvalozpěvů. Já sice chápu, že je krásné, že mi mod_rewrite přepíše dynamické adresy na statické, ale já nechci v odkazech používat statické adresy, protože bych musel přepisovat celou aplikaci. Chápete mě? Pomůžete někdo? Dohady si prosím nechte od cesty, potřebuju radu od někoho, kdo tomu rozumí. Díky! |
||
izsak Profil |
#2 · Zasláno: 19. 3. 2005, 09:06:55
Nemusí sa to zacyklit, pokiaľ sa správne nastavia parametre v RewriteRule.
RedirectMatch permanent index\.php?clanek=(.*)$ /clanek-$1 RewriteEngine On RewriteRule ^/clanek-(.*)$ /index.php?clanek=$1 [L] Nemalo by nastať zacyklenie, keďže RewriteRule má aj nastavenie [PT] (passthrough), ktoré sa používa vtedy, keď treba prepísanú cestu ďalej presmerovať. Čiže normálne nastane len prepísanie cesty, ktorá už nie je ďalej upravovaná/spracovaná s mod_alias (RedirectMatch). |
||
Časová prodleva: 14 dní
|
|||
Aleš Janda Profil * |
#3 · Zasláno: 2. 4. 2005, 10:00:01
Řešil jsem něco podobného - dával jsem pryč přípony .php tak, že jsem na ně odkazoval mod_rewritem, ale naopak aby při přímém volání s .php bylo přesměrování 301 na stránku bez přípony.
Ten RedirectMatch, co tu psal izsak, mi nefugoval, tak jsem to udělal následovně: v souboru .php s funkcemi, který vkládám do každé stránky, jsem přidal funkci function ZkontrolujBezpriponovost() { if (StrPos($_SERVER["REQUEST_URI"],'?')) { $adresa=SubStr($_SERVER["REQUEST_URI"],0,StrPos($_SERVER["REQUEST_URI" ],'?')); $zbytek=SubStr($_SERVER["REQUEST_URI"],StrPos($_SERVER["REQUEST_URI"], '?')); } else { $adresa=$_SERVER["REQUEST_URI"]; $zbytek=""; } if (StrToLower(SubStr($adresa,-4)) == ".php") { $adresa=SubStr($adresa,0,-4); Header("HTTP/1.1 301 Moved Permanently"); Header("Location: http://".$_SERVER["HTTP_HOST"].$adresa.$zbytek); Header("Connection: close"); Die(""); } } kterou zavolám při každém požadavku na stránku. Ta pak udělá/neudělá redirect na správnou stránku. Myslím, že tvůj problém by šel řešit obdobně. Jen mám jeden dotaz k tomu mod_rewrite: Pokud mám v .htaccess pravidlo RewriteRule ^([-_a-z]+)$ $1.php [L] tak mi to přidá hlavičku do $_SERVER: REDIRECT_STATUS: 200 Co to je? (Nikde jsem to nenašel) |
||
Časová prodleva: 3 měsíce
|
|||
Yuhů Profil |
#4 · Zasláno: 16. 7. 2005, 00:14:47
reaguji na Izsaka
> RedirectMatch permanent index\.php?clanek=(.*)$ /clanek-$1 tohle je krásná idea, ale nefunguje to. Mod_alias a RedirectMatch celou část URL za otazníkem ignoruje. |
||
Časová prodleva: 14 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0