我在托管服务器上进行内部重写时遇到问题。这在我的开发和测试服务器上完美运行,但是当 .htaccess 移植到生产共享主机时,内部重写不会发生。
.htaccess 正在读取(验证)带有“重定向”的 RewriteRule 有效,但内部重写无效。浏览器中的 URL 显示正确的友好 URL,但内部重写没有发生,我最终进入主页。
这是重写的一部分:
Options +FollowSymLinks -Indexes
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} -f [OR]
RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule .* - [L]
RewriteRule ^contact/$ index.php?pid=3 [QSA,L]
所以我在浏览器中的 URL 将显示 www.mydomain.com/contact/ 但我在主页上。
如果我将 RewriteRule ^contact/$ 更改为 ^contact/$ http://www.mydomain.com/index.php?pid=3我会被重定向,但这不是我想要的。我想要内部重写。
查看日志,我没有收到 404,所以看来我只是在访问目录的基础/根目录。
有任何想法吗??
谢谢!韩吉
更新:收到来自托管服务提供商的电子邮件,称他们不熟悉我的重写“风格”,这就是他们的建议:
RedirectPermanent /contact/ http://www.mydomain.com/index.php?pid=3
嗯……白痴。我希望我们能找出是什么阻止了我的重写工作,这样我就可以用一些东西来回顾它们。我猜这是Apache的配置问题?请帮忙。