我在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
。
答案 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]