.htaccess mod_rewrite在不同的网站上有不同的结果

时间:2010-02-08 19:39:36

标签: php .htaccess mod-rewrite indexing server-configuration

我正在使用mod_rewrite来创建SEO URL。基本上这个东西的工作方式如下: 所有请求都被.htaccess捕获并重定向到php脚本(比如transform.php)。 transform.php解析SEO URL并将其转换为普通URL,然后包含index.php,然后捕获应用程序(index.php)的输出并使用RegEx将所有普通URL转换为SEO URL。 所以至关重要的一步是让所有请求都通过transform.php。我的.htaccess相当长,但我设法将其限制为以下几行。

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on

    RewriteRule ^index\.php?(.*)$ ./transform.php?p=$1&%{QUERY_STRING} [L]

</IfModule>

初始(根)网址出现问题:http://mysite.com/。当我输入http://mysite.com/并且网站位于我的本地comp时,一切正常。 http://mysite.com/被.htaccess捕获并发送到transform.php进行进一步处理。但是在另一台服务器上,这一行不起作用(比方说http://mysite-other-server.com/)。此.htaccess行根本不捕获请求。尽管如此,http://mysite-other-server.com/index.php的一切正常。

此外,我在第二台服务器上有几个站点,其中一些站点有效,而其中一些站点没有。对于他们中的一些人来说,首先将网址解析为http://mysite-other-server.com/index.php,然后由.htaccess处理,而对于其他网址则不会解析网址.htaccess处理http://mysite-other-server.com/

我非常困惑,并试图谷歌搜索没有任何运气。任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:1)

我认为Apache配置为不接受.htacces文件。

您必须使用AllowOverride设置从httpd配置启用它。

http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride

另一种可能性是生产服务器没有加载mod_rewrite,请检查LoadModule指令。