這是我的mod_rewrite規則的lighttpd:lighttpd的mod_rewrite的「在正則表達式是不工作
url.rewrite-once = (
"^/label/([-'\./\+a-z0-9A-Z]+)/$" => "/index.php?page=label&label=$1",
"^/riddim/([-'\./\+a-z0-9A-Z]+)/$" => "/index.php?page=riddim&riddim=$1",
"^/([a-z]+)$" => "/index.php?page=$1",
"^/(!?pma)([a-z]+)/?$" => "/index.php?page=$1"
)
的問題是,字符」(39 .D)由於某種原因打破了鏈接,我得到一個404錯誤。
/riddim/Some+Thing+Here+9.38/ --> works, page is shown
/riddim/Someone's+Stuff+Here/ --> fails, page not found 404 error
我已經用「^/riddim爲底/(.+)/$」試着和它的作品,所以我想「更是打破了鏈接/ mod_rewrite的。 我甚至嘗試過轉義字符(使用:\'),儘管我從來沒有聽說過使用'作爲一些特殊字符的正則表達式引擎,但是也失敗了。
的lighttpd的是在Web服務器上運行的,在我的電腦上我使用的XAMPP與Apache,我設置了相同的正則表達式/規則存在,並且工作得很好:
RewriteEngine on
RewriteRule ^/label/([-'\./\+a-z0-9A-Z]+)/$ /index.php?page=label&label=$1
RewriteRule ^/riddim/([-'\./\+a-z0-9A-Z]+)/$ /index.php?page=riddim&riddim=$1
RewriteRule ^/([a-z]+)$ /index.php?page=$1
我在做什麼錯?
它做什麼_does_? 「作品」vs「失敗」有點鬆動。它如何失敗? – FrankieTheKneeMan
好吧,如果鏈接包含'char,則正則表達式失敗,因此它會將您發送到404錯誤而不是頁面。下面是這個例子:[WORKING](http://riddimbase.net/riddim/Do+You+Love/)[FAILING](http://riddimbase.net/riddim/Don't+Let+Them/) - 它肯定是一個正則表達式的問題,因爲用^/riddim /(.+)/$替換正則表達式使它適用於這兩個鏈接,但我不明白爲什麼正則表達式不匹配 – phew