重写规则不起作用

时间:2014-10-16 09:34:41

标签: apache .htaccess mod-rewrite url-rewriting

我在Apache虚拟主机配置httpd-vhosts.conf中使用了一些重写规则,它在那里工作正常。因为我想转移到托管服务器,所以我必须使用.htaccess文件,因为我无法访问apache配置文件。

我在当地试了一下,不知怎的,我根本不能做到这一点。 本地我使用xampp 1.8.3(Apache 2.4.10)。我将.htaccess文件放在虚拟主机的根目录中,并使用这些行进行测试

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule /testrule /about/about.php [L]

致电localhost/testrule时,我总是收到404错误 当我把它放在httpd-vhosts.conf时,它工作正常。 mod_rewrite 已启用,我在目录部分设置了AllowOverride All

2 个答案:

答案 0 :(得分:1)

blog post明确提到

  

在VirtualHost上下文中,最初将匹配模式   主机名和端口之后以及查询之前的URL部分   字符串(例如“/app1/index.html”)。

     

在Directory和htaccess上下文中,Pattern最初会是   删除前缀后,与文件系统路径匹配   将服务器引导到当前的RewriteRule(例如“app1 / index.html”或   “index.html”取决于定义指令的位置。

因此,在虚拟主机上下文中,匹配从/testrule/...

开始

.htaccess<Directory/>上下文中,它与testrule/...

匹配

答案 1 :(得分:0)

您可以在此处快速查看htaccess重写规则:
http://htaccess.madewithlove.be/或此处:
http://martinmelin.se/rewrite-rule-tester/

只需删除RewriteRule中的前导斜杠即可完成

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule testrule /about/about.php [L]