簡體   English   中英

Apache mod-rewrite變量

[英]Apache mod-rewrite variables

Apache Mod-Rewrite,我有一個問題,不是這樣的錯誤,但是以下內容使$ 1和$ 2都等於$ 1,即“調查”

RewriteRule ^((survey|quiz|form|widget))/create$ items/create/?type=$1 [L]
RewriteRule ^((survey|quiz|form|widget))/([0-9]+)/edit$ items/edit/?type=$1&id=$2 [L]
RewriteRule ^((survey|quiz|form|widget))/([0-9]+)/delete$ items/delete/?type=$1&id=$2 [L]
RewriteRule ^((survey|quiz|form|widget))/([0-9]+)/results$ items/results/?type=$1&id=$2 [L]
RewriteRule ^((survey|quiz|form|widget))/([0-9]+)/reliability$ items/reliability/?type=$1&id=$2 [L]
RewriteRule ^((survey|quiz|form|widget))/([0-9]+)/publish$ items/publish/?type=$1&id=$2 [L]

所以就像

/widget/45657/publish

將會去

/items/publish/?type=widget&id=widget

代替

/items/publish/?type=widget&id=45657

提前致謝。

為什么要加上兩個括號? 這解釋了您的問題。

嘗試這個:

RewriteRule ^(survey|quiz|form|widget)/create$ items/create/?type=$1 [NC,QSA,L]
RewriteRule ^(survey|quiz|form|widget)/([0-9]+)/edit$ items/edit/?type=$1&id=$2 [NC,QSA,L]
RewriteRule ^(survey|quiz|form|widget)/([0-9]+)/delete$ items/delete/?type=$1&id=$2 [NC,QSA,L]
RewriteRule ^(survey|quiz|form|widget)/([0-9]+)/results$ items/results/?type=$1&id=$2 [NC,QSA,L]
RewriteRule ^(survey|quiz|form|widget)/([0-9]+)/reliability$ items/reliability/?type=$1&id=$2 [NC,QSA,L]
RewriteRule ^(survey|quiz|form|widget)/([0-9]+)/publish$ items/publish/?type=$1&id=$2 [NC,QSA,L]

順便說一下,您可以通過以下方式優化規則:

RewriteRule ^(survey|quiz|form|widget)/create$ items/create/?type=$1 [NC,QSA,L]
RewriteRule ^(survey|quiz|form|widget)/([0-9]+)/(edit|delete|results|reliability|publish)$ items/$3/?type=$1&id=$2 [NC,QSA,L]

那不是更短嗎? ;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM