这是我的 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 在网络服务器上运行,在我的计算机上我使用 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
我究竟做错了什么?