我以前的服务器工作正常.. 今天我更换了新服务器,得到 RewriteRule 无法在我的 htaccess 上编译正则表达式。

如何修复这条线。

RewriteRule ^category/([0-9]+)(?:/([^/]+)(?:/([^/]+))?)(?:/([^/]+)(?:/([^/]+))?)?/$ ./category.php?pid=$1&catname=$2&page=$3 [L]

让我知道 :)

最佳答案

您可能正在使用具有不同正则表达式引擎的不同 Apache 版本。 Apache 1.3 以后的版本使用 POSIX ERE,而 2.0 以后的版本使用 PCRE。并且只有 PCRE 支持非捕获组 (?: expr )

所以尝试一个没有它们的模式:

RewriteRule ^category/([0-9]+)(/([^/]+)(/([^/]+))?)(/([^/]+)(/([^/]+))?)?/$ ./category.php?pid=$1&catname=$3&page=$5 [L]

关于regex - RewriteRule 无法编译正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1531876/

10-12 13:55