【问题标题】:mod_rewrite redirects instead of rewriting URLsmod_rewrite 重定向而不是重写 URL
【发布时间】:2012-09-04 15:19:58
【问题描述】:

大家好,

我有一个包含以下内容的 HTACCESS 文件:

Options +FollowSymlinks

RewriteEngine on

RewriteRule ^(.*)$ http://mydomain.com/public/$1


RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d

代码的目的是当用户输入我的域名'mydomain.com'时,它不会调用mydomain.com/index.php,而是调用mydomain.com/public/index.php没有用户注意到重定向(或内部重定向)。

我在某个网站上获得了代码,它可以在我的本地机器(WAMP 堆栈)上运行。 问题是,当我现在将其传输到共享托管服务器时,会发生外部重定向而不是内部重定向。示例:

在地址栏中键入 mydomain.com 将是 mydomain.com/public。

我已经检查了托管服务器的配置,是的,

  • HTACCESS 已启用。
  • mod_rewrite 已启用。
  • 我可以使用 HTACCESS 文件修改 PHP 设置。

共享主机服务器实现 LAMP 堆栈。

知道我缺少什么吗?非常感谢!

编辑

我所有的重写不仅重定向那些在我的本地计算机上完美运行的代码。

【问题讨论】:

    标签: .htaccess mod-rewrite hosting


    【解决方案1】:

    去掉规则目标中的http://mydomain.com。它告诉重写引擎重定向而不是内部重写。

    【讨论】:

    • 我会试试看,但你能解释一下为什么我的机器上没有发生重定向吗?即使用本地主机?谢谢!
    • @eGzg0t 不知道为什么,当你有它时它应该总是重定向。你确定是同一个版本的apache吗?
    • 不,它们不同,我的已更新...我不确定托管站点的版本,但可以肯定它接近最新版本。
    • 做到了。但它非常奇怪。还是谢谢!