好的,我开始认为问题是我,但是......¿这里有什么问题?
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule testpage\.html http://www.google.com [R] #It works
RewriteRule ^mineral/([0-9]+)/?$ ver.php?id=$1 [NC,L] #It doesn't
我有一个名为“WebX”的文件夹,里面有这个.htaccess以及来自网络的其他文件。
mod_rewrite根据phpinfo工作正常,一切都在localhost上运行。
最苛刻的是,如果我输入localhost/WebX/testpage.html
,它会重定向到Google
但不幸的是,如果我输入localhost/WebX/mineral/1
,它就会给我404.¿会发生什么?
答案 0 :(得分:1)
您遇到的问题是由RewriteBase /
引起的。您的.htaccess
位于子目录/WebX/
中,但您告诉mod_rewrite重写规则,就好像当前目录是/
一样。它尝试在www-root中加载文件ver.php
,该文件不存在。如果您对其尝试加载的文件有详细的错误消息,您会注意到它曾尝试加载/ver.php
而不是/WebX/ver.php
,如您所料。
你正在做的其余部分,最明显的是使用相对网址而不是/
前缀绝对网址,这似乎是正确的。要使用的正确.htaccess
是:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /WebX/
RewriteRule testpage\.html http://www.google.com [R] #It works
RewriteRule ^mineral/([0-9]+)/?$ ver.php?id=$1 [NC,L] #It now should work