1

我正在使用 mod_rewrite 创建 SEO URL。基本上事情的工作方式如下:所有请求都被.htaccess捕获并重定向到一个php脚本(比如说transform.php)。transform.php 解析 SEO URL 并将其转换为普通 URL,然后包含 index.php,然后捕获应用程序 (index.php's) 的输出并使用 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>

初始(根)URL 出现问题:http://mysite.com/。当我键入http://mysite.com/并且站点位于我的本地计算机上时,一切正常。http://mysite.com/被 .htaccess 捕获并发送到 transform.php 进行进一步处理。但是在另一台服务器上,这条线不起作用(比如说http://mysite-other-server.com/)。此 .htaccess 行根本无法捕获请求。不过,对于http://mysite-other-server.com/index.php,一切正常。

此外,我在第二台服务器上有几个站点,其中一些可以工作,而有些则不能。就像其中一些 URL 首先解析为http://mysite-other-server.com/index.php然后由 .htaccess 处理,而对于其他 URL 没有解析并且 .htaccess 处理http:// mysite-other-server.com/

我很困惑,并尝试在没有任何运气的情况下进行谷歌搜索。非常感谢任何帮助。

4

1 回答 1

2

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

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

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

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

于 2010-02-08T19:45:00.573 回答