我在运行 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]