Apache RewriteRule 在 2.2.3 中有效,但在 1.3.41 中无效

Apache RewriteRule 在 2.2.3 中有效,但在 1.3.41 中无效

我在运行 Apache 2.2.3 的开发服务器上开发网站时创建了以下 RewriteRule:

RewriteEngine on
RewriteRule ^add-ons/(?!=details|download)(.+) /add-ons/details/$2 [NC]

基本上,我想要做的是删除 URL 的 /details/ 部分,这样我就可以得到一个像 example.com/add-ons/some-addon/ 这样的链接,而不是 example.com/add-ons/details/some-addon/。

不幸的是,在将其发布到运行 Apache 1.3.41 的实时服务器后,我得到了Error 500: Internal Server Error。我尝试过,但都没有成功。这是 Apache 1.3 的限制吗?也许不允许向前看?

答案1

使用 RewriteCond 而不是负向前瞻来重写它,这似乎有效:

RewriteCond $0 !^add-ons/(details|download) [NC]
RewriteRule ^add-ons/(.+)$ /add-ons/details/$1 [NC,L]

相关内容