RewriteRule无法在VPS中编译正则表达式

时间:2014-12-02 13:35:03

标签: php regex apache .htaccess mod-rewrite

我以前的服务器工作正常。今天我改变了新的服务器并且让RewriteRule无法在我的htaccess上编译正则表达式。

如何修复此行

RewriteRule ^([a-zA-Z0-9_-\s\$\:\!\?\[\]\(\)\'\"]+)$ %{QUERY_STRING}?file=$1 [L]

这是将所有页面重写为index.php文件的规则。我正在使用Apache 2.2.29。谢谢!

1 个答案:

答案 0 :(得分:1)

你的正则表达式确实看起来很可疑,试试这条规则:

RewriteRule ^([][\w\s$:!()'"-]+)/?$ ?file=$1 [L,QSA]
  • 连字符需要位于字符类的第一个或最后一个位置,以避免转义。
  • 无需在角色类中进行所有转义。