ModRewrite仅适用于某些选项

时间:2011-01-09 03:00:10

标签: .htaccess mod-rewrite

我的htaccess文件如下:

RewriteEngine On
RewriteRule ^blog/post/([0-9]+) /blog.php?post=$1
RewriteRule ^blog/page/([0-9]+) /blog.php?page=$1
RewriteRule ^work/([0-9]+) /work.php?ID=$1

work.php规则正在运行,但两个博客规则却没有。他们过去常常工作,但最近我搬了我的服务器。任何想法为什么会这样?

提前致谢!

编辑: 哇,我注意到我有一个工作文件夹,但没有博客文件夹,所以我做了一个,现在这个工作。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我只是在我的本地Apache 2.2安装上设置一个(虚拟)服务器,运行PHP 5.2作为模块。服务器的文档根目录只包含php文件(简单地)处理上面给出的示例(只是回显$ _GET中的参数)。我的文档根目录中的.htaccess文件只包含您在上面指定的内容,而不包含其他内容。文档根目录不包含子目录/ work或/ blog(或/ blog / post或/ blog / page)。

我的设置完全没有任何问题将SEO友好的URL重写为正确的PHP文件,这反过来又回应了我期望从$ _GET获得的参数值。

除了mod_rewrite之外还有一些东西要求存在子目录,而Apache在处理重写规则之前就会遇到(并因此需要)它。根据你上面的规则,不确定它是什么,但似乎不是mod_rewrite。