我遇到了一个问题,Apache 不想读取我的重写指令,也不想根据这些指令重写我的 URL。我已将条件和规则直接写入我的 Apachehttpd.conf
文件中:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} Round_2
RewriteRule ^Round_2/(.*)$ /newBuyer/desktop/$1 [R=301,L]
RewriteCond %{REQUEST_URI} itemList
RewriteRule ^/?(.*)/itemList/(.*)$ /newBuyer/$1/search/$2 [R=301,L]
RewriteCond %{REQUEST_URI} eventDetail
RewriteRule ^/?(.*)/eventDetail/(.*)$ /newBuyer/$1/event/$2 [R=301,L]
</IfModule>
我已经使用以下命令重新加载了 Apache:
$ apachectl -k graceful
刷新了浏览器缓存,重定向不起作用。我可以在本地 Windows Apache 实例上让它工作,但不能在我的 Cent7 Apache 实例上工作。
我已确认重写模块已加载。
答案1
在条件和规则之间的 IfModule 后面添加 Directory 标签后,我能够使 URL 重写正常工作。以下是最终的工作结果:
<IfModule mod_rewrite.c>
<Directory "/directory/to/designers/files/">
RewriteEngine On
RewriteCond %{REQUEST_URI} Round_2
RewriteRule ^Round_2/(.*)$ /newBuyer/desktop/$1 [R=301,L]
RewriteCond %{REQUEST_URI} itemList
RewriteRule ^/?(.*)/itemList/(.*)$ /newBuyer/$1/search/$2 [R=301,L]
RewriteCond %{REQUEST_URI} eventDetail
RewriteRule ^/?(.*)/eventDetail/(.*)$ /newBuyer/$1/event/$2 [R=301,L]
</Directory>
</IfModule>
谢谢