很简单.htaccess mod_rewrite配置给出了404

时间:2013-12-12 19:30:06

标签: php apache .htaccess mod-rewrite web

好的,我开始认为问题是我,但是......¿这里有什么问题?

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.¿会发生什么?

1 个答案:

答案 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