【发布时间】:2011-01-14 12:34:41
【问题描述】:
我正在使用 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/
我很困惑,并尝试在没有任何运气的情况下进行谷歌搜索。非常感谢任何帮助。
【问题讨论】:
标签: php .htaccess mod-rewrite indexing server-configuration