我想通過.htaccess在某個URL上應用RewriteRule,並且遇到了問題。加號和.htaccess中的百分號mod_rewrite
下面是代碼,我以前還爲這個具體用法:
RewriteRule ^levels-u-([a-z0-9_-]+)\.html$ levels.php?p=$1&i=u&r=true [QSA,L,NC]
RewriteRule ^levels-u-([a-z0-9_-]+)-\(([a-z]+)\)\.html$ levels.php?p=$1&i=u&n=$2&r=true [QSA,L,NC]
這種工作方式是,有可能是這個頁面:
水平-U-username.html
或本頁:
levels-u-username-(text).html
但是用戶名文本可以包含空格和括號(顯示爲+,%5B和%5D)。
所以我用這個代碼字符
RewriteRule ^levels-u-([^/]+)\.html$ levels.php?p=$1&i=u&r=true [QSA,L,NC]
RewriteRule ^levels-u-([^/]+)-\(([a-z]+)\)\.html$ levels.php?p=$1&i=u&n=$2&r=true [QSA,L,NC]
的任意組合現在匹配,這樣,這不會輸出404錯誤:
水平-U-用戶名+%5Bmore%5D.html(這是 「用戶名[詳細]」)
但現在的問題是,後者
水平-U-用戶名 - (文本)的.html
將改寫「用戶名 - (刪除)」中的第一個重寫規則爲$ 1,而不是在第二個有1 $ =「用戶名」和$ 2 =「文本」
什麼,我想弄清楚,是如何把加號和支架到這個正則表達式的.htaccess mod_rewrite的:
([a-z0-9_-]+)
因爲
([^/]+)
創建另一個重寫規則衝突。
再次,這些我需要加入到表達中的字符:
「+」, 「%5B」(這是 「[」), 「%5D」(這是 「]」)
?另一種認爲我有被禁用語「 - (」如果可能的話
打開重寫日誌可以幫助你找到是怎麼回事爲什麼... –