无法让 mod_rewrite 重写 URL

无法让 mod_rewrite 重写 URL

我遇到了一个问题,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>

谢谢

相关内容