Autor | Zpráva | ||
---|---|---|---|
Jan Kev Profil * |
Dobrý den,
potřeboval bych z adresy CarD.php?title=auto-detail&id=45 udělat přívětivou adresu auto-detail.php?id=45 Použil jsem tyto pravidla: RewriteCond %{QUERY_STRING} ^title=([^&]+)&(.*)$ RewriteRule CarD.php$ %1.php?%2 [R] Jenže se mi vypíše tato adresa auto-detail.php?title=auto-detail&id=45 (já ale potřebuji pouze adresu bez query string title) Pokud použiji otazník, automaticky se mi vkládají do přesměrovávané adresy všechny query string. Nevíte někdo co s tím? |
||
Davex Profil |
#2 · Zasláno: 7. 11. 2009, 17:49:15 · Upravil/a: Davex
Podmínka by měla být nejspíš obráceně. Pokud platí směr přepisu auto-detail?id=45 -> CarD.php?title=auto-detail&id=45, tak lze použít pravidlo:
RewriteRule auto-detail\.php$ CarD.php?title=auto-detail [L,QSA] Pokud se má přesměrovávat z CarD.php na auto-detail.php, tak mi tvoje varianta parametr title nedoplňuje. |
||
Kajman_ Profil * |
#3 · Zasláno: 7. 11. 2009, 22:45:28
Jan Kev:
Pravidla vypadají v pořádku. Nejsou tam žádná jiná, se kterými to může kolidovat? To by pak mohlo pomoci přidat ještě flag L. |
||
Časová prodleva: 8 dní
|
|||
Jan Kev Profil * |
#4 · Zasláno: 16. 11. 2009, 09:41:15
Směr přesměrování mám správně, takhle to potřebuji...
Pořád ale na to nemůžu přijít. Ani flag L nepomohl. Například když použiji tento předpis: RewriteCond %{QUERY_STRING} ^title=([^&]+)&(.*)$ RewriteRule CarD.php$ %1.php%2 [R] (tzn. vynechám schválně ?) vypíše mi proglížeč adresu: auto-detail.phpid=5?title=auto-detail&id=45 |
||
Kajman_ Profil * |
#5 · Zasláno: 16. 11. 2009, 10:43:14
Například když použiji tento předpis:
Tak to se už chová přesně podle pravidel. To není záhada. K tomu prvnímu příkladu... Opravdu tam nemáte už žádná další pravidla? |
||
Jan Kev Profil * |
#6 · Zasláno: 16. 11. 2009, 11:52:52
Ale je záhada, že když použiji ?%2, tak že vypíše %1 a %2 - tedy obě části regulárního výrazu, i když požaduji pouze (%2 - druhou část).
Opravdu tam jiné nemám. |
||
Kajman_ Profil * |
#7 · Zasláno: 16. 11. 2009, 12:12:04
Můžete zapnout rewritelog? Co je v něm?
|
||
Davex Profil |
#8 · Zasláno: 16. 11. 2009, 12:49:39
Vypadá to, že se přesměruje správně, ale ještě se přidá původní query (jako s příznakem QSA).
Co se děje po přidání absolutní cesty a změně typu přesměrování? RewriteCond %{QUERY_STRING} ^title=([^&]+)&(.*)$ RewriteRule CarD.php$ /%1.php?%2 [R=301,L] |
||
Jan Kev Profil * |
#9 · Zasláno: 16. 11. 2009, 12:54:36
Httpd.conf:
RewriteEngine on RewriteLogLevel 9 RewriteCond %{QUERY_STRING} ^title=([^&]+)&(.*)$ RewriteRule /CarD.asp$ %1.asp?%2 [R] RewriteLog9: 10.2.0.34 10.2.0.34 Mon, 16-Nov-2009 12:51:00 GMT [10.2.0.34/sid#34][rid#25950504/initial] (2) init rewrite engine with requested uri /user/Account/CarD.asp?title=auto-detail&id=56 10.2.0.34 10.2.0.34 Mon, 16-Nov-2009 12:51:00 GMT [10.2.0.34/sid#34][rid#25950504/initial] (1) Htaccess process request C:\Program Files\ISAPI_Rewrite\httpd.conf 10.2.0.34 10.2.0.34 Mon, 16-Nov-2009 12:51:00 GMT [10.2.0.34/sid#34][rid#25950504/initial] (3) applying pattern '/CarD.asp$' to uri '/user/Account/CarD.asp' 10.2.0.34 10.2.0.34 Mon, 16-Nov-2009 12:51:00 GMT [10.2.0.34/sid#34][rid#25950504/initial] (4) RewriteCond: input='title=auto-detail&id=56' pattern='^title=([^&]+)&(.*)$' => matched 10.2.0.34 10.2.0.34 Mon, 16-Nov-2009 12:51:00 GMT [10.2.0.34/sid#34][rid#25950504/initial] (1) escaping auto-detail.asp?title=auto-detail&id=56 10.2.0.34 10.2.0.34 Mon, 16-Nov-2009 12:51:00 GMT [10.2.0.34/sid#34][rid#25950504/initial] (2) explicitly forcing redirect with http://10.2.0.34/auto-detail.asp?title=auto-detail&id=56 10.2.0.34 10.2.0.34 Mon, 16-Nov-2009 12:51:00 GMT [10.2.0.34/sid#34][rid#25950504/initial] (2) internal redirect with /user/Account/CarD.asp?title=auto-detail&id=56 [INTERNAL REDIRECT] 10.2.0.34 10.2.0.34 Mon, 16-Nov-2009 12:51:00 GMT [10.2.0.34/sid#34][rid#25950504/initial] (2) init rewrite engine with requested uri /auto-detail.asp?title=auto-detail&id=56 10.2.0.34 10.2.0.34 Mon, 16-Nov-2009 12:51:00 GMT [10.2.0.34/sid#34][rid#25950504/initial] (1) Htaccess process request C:\Program Files\ISAPI_Rewrite\httpd.conf 10.2.0.34 10.2.0.34 Mon, 16-Nov-2009 12:51:00 GMT [10.2.0.34/sid#34][rid#25950504/initial] (3) applying pattern '/CarD.asp$' to uri '/auto-detail.asp' |
||
Kajman_ Profil * |
#10 · Zasláno: 16. 11. 2009, 12:57:18
301 bych tam nepřidával, pak se to horkotěžko testuje (některé prohlížeče si zapamatují první 301 přesměrování a pak ho jen používají).
Jinak jsem ty pravidla zkoušel a fungují tak, jak chcete... RewriteEngine On RewriteBase / RewriteCond %{QUERY_STRING} ^title=([^&]+)&(.*)$ RewriteRule CarD.php$ %1.php?%2 [R,L] Ten log pak vypadá.. 127.0.0.1 - - [16/Nov/2009:12:56:06 +0100] [test.localhost/sid#1537478][rid#2edcf80/initial] (3) [perdir D:/www/test/] strip per-dir prefix: D:/www/test/CarD.php -> CarD.php 127.0.0.1 - - [16/Nov/2009:12:56:06 +0100] [test.localhost/sid#1537478][rid#2edcf80/initial] (3) [perdir D:/www/test/] applying pattern 'CarD.php$' to uri 'CarD.php' 127.0.0.1 - - [16/Nov/2009:12:56:06 +0100] [test.localhost/sid#1537478][rid#2edcf80/initial] (4) [perdir D:/www/test/] RewriteCond: input='title=auto-detail&id=45' pattern='^title=([^&]+)&(.*)$' => matched 127.0.0.1 - - [16/Nov/2009:12:56:06 +0100] [test.localhost/sid#1537478][rid#2edcf80/initial] (2) [perdir D:/www/test/] rewrite 'CarD.php' -> 'auto-detail.php?id=45' 127.0.0.1 - - [16/Nov/2009:12:56:06 +0100] [test.localhost/sid#1537478][rid#2edcf80/initial] (3) split uri=auto-detail.php?id=45 -> uri=auto-detail.php, args=id=45 127.0.0.1 - - [16/Nov/2009:12:56:06 +0100] [test.localhost/sid#1537478][rid#2edcf80/initial] (3) [perdir D:/www/test/] add per-dir prefix: auto-detail.php -> D:/www/test/auto-detail.php 127.0.0.1 - - [16/Nov/2009:12:56:06 +0100] [test.localhost/sid#1537478][rid#2edcf80/initial] (2) [perdir D:/www/test/] explicitly forcing redirect with http://test.localhost:8080/D:/www/test/auto-detail.php 127.0.0.1 - - [16/Nov/2009:12:56:06 +0100] [test.localhost/sid#1537478][rid#2edcf80/initial] (2) [perdir D:/www/test/] trying to replace prefix D:/www/test/ with / 127.0.0.1 - - [16/Nov/2009:12:56:06 +0100] [test.localhost/sid#1537478][rid#2edcf80/initial] (5) strip matching prefix: D:/www/test/auto-detail.php -> auto-detail.php 127.0.0.1 - - [16/Nov/2009:12:56:06 +0100] [test.localhost/sid#1537478][rid#2edcf80/initial] (4) add subst prefix: auto-detail.php -> auto-detail.php 127.0.0.1 - - [16/Nov/2009:12:56:06 +0100] [test.localhost/sid#1537478][rid#2edcf80/initial] (1) [perdir D:/www/test/] escaping http://test.localhost:8080/auto-detail.php for redirect 127.0.0.1 - - [16/Nov/2009:12:56:06 +0100] [test.localhost/sid#1537478][rid#2edcf80/initial] (1) [perdir D:/www/test/] redirect to http://test.localhost:8080/auto-detail.php?id=45 [REDIRECT/302] 127.0.0.1 - - [16/Nov/2009:12:56:06 +0100] [test.localhost/sid#1537478][rid#2ee0f90/initial] (3) [perdir D:/www/test/] strip per-dir prefix: D:/www/test/auto-detail.php -> auto-detail.php 127.0.0.1 - - [16/Nov/2009:12:56:06 +0100] [test.localhost/sid#1537478][rid#2ee0f90/initial] (3) [perdir D:/www/test/] applying pattern 'CarD.php$' to uri 'auto-detail.php' 127.0.0.1 - - [16/Nov/2009:12:56:06 +0100] [test.localhost/sid#1537478][rid#2ee0f90/initial] (1) [perdir D:/www/test/] pass through D:/www/test/auto-detail.php |
||
Kajman_ Profil * |
#11 · Zasláno: 16. 11. 2009, 13:05:11
Tak se obraťte na vývojáře toho modulu pro iis, že to není kompatibilní s chováním mod_rewrite přímo v apachi.
|
||
Jan Kev Profil * |
#12 · Zasláno: 16. 11. 2009, 13:18:44
Ok, děkuji za váš čas.
|
||
Časová prodleva: 14 let
|
0