簡體   English   中英

mod_rewrite,如何正確重寫鏈接

[英]mod_rewrite, how to rewrite links correctly

我正在嘗試重寫我網站上的鏈接。 重寫之前可能的鏈接以及重寫之后我想看到的內容:
/index.pl?mode=users&action=add /users/add/
/index.pl?mode=streets&action=edit&id=7 /streets/edit/7
/index.pl?mode=users&action=info&id=7 /users/info/7
等等

.htaccess內容:

RewriteEngine On
RewriteCond %{REQUEST_URI} !\.(jpe?g|gif|bmp|png|tiff|css|js)$ [NC]
RewriteRule ^([A-Za-z0-9-]+)/((edit|delete|info))/([0-9]+)$ index.pl?mode=$1&action=$2&id=$3 [L]
RewriteRule ^([A-Za-z0-9-]+)/((add))/?$ index.pl?mode=$1&action=$2 [L]
RewriteRule ^([A-Za-z0-9-]+)/?$ index.pl?mode=$1 [L] 

/users/add//street/add/正常運行,但是...

問題:
/users/edit/xx我無法在perl腳本中接受ID。 為什么?
/users/info/xx我什至無法進入信息部分/?mode=users&action=info&id=7頁面(它必須顯示具有錯誤ID的空白表格

順便說一句...我的網站具有“開關”結構。 我的意思是,如果mode是users,則加載“ users.pl”,如果mode = streets加載“ streets.pl”,等等。關於第二個問題-確保我在users.pl上有信息部分! 鏈接/?mode=users&action=info&id=7可以完美工作。

ps:添加了php-tag,因為它不是'perl'問題,但是php等於perl,所以php-followers也可以幫助我
pps:對不起,我的英語不好。

您有太多的括號,這會使您的反向引用一一對應:

RewriteRule ^([A-Za-z0-9-]+)/(edit|delete|info)/([0-9]+)$ index.pl?mode=$1&action=$2&id=$3 [L]
RewriteRule ^([A-Za-z0-9-]+)/(add)/?$ index.pl?mode=$1&action=$2 [L]

這兩個規則在((edit|delete|info))((add))周圍有太多括號(盡管“ add”不受影響,因為$ 2正確地反向引用了它)。

暫無
暫無

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

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