【问题标题】:Apache mod_rewrite - forward domain root to subdirectoryApache mod_rewrite - 将域根转发到子目录
【发布时间】:2010-06-13 13:40:06
【问题描述】:

我遇到了我最初认为是一个简单的问题。我正在为我的网站使用共享主机(因此我无权访问 Apache 配置)并且只获得了一个文件夹来存储我的所有内容。这一切都很好,但这意味着我的所有子域必须将它们的虚拟文档根目录放在 public_html 中,这意味着它们实际上成为了我的主域上的一个文件夹。

我想做的是像这样组织我的public_html

public_html/ 万维网/ 索引.php ... 子1/ 索引.php ... some_library/ ...

这样,我所有的网页内容仍然在public_html,但只有一小部分会提供给客户端。我可以轻松地为所有子域实现这一点,但这是我遇到问题的主域。

我在public_html 中创建了一个.htaccess 文件,内容如下:

Options +SymLinksIfOwnerMatch # 我不允许使用 FollowSymLinks 重写引擎开启 RewriteBase / RewriteCond %{REQUEST_URI} !^/www [NC] 重写规则 ^(.*)$ /www/$1 [L]

这工作得相当好,但出于某种奇怪的原因,www.example.com/stuff 被转换为www.example.com/www/stuff请求,因此给出了 404 错误。我的理解是,除非指定了“R”标志,否则 mod_rewrite 纯粹是内部的,所以我无法理解为什么会生成请求,因为这意味着(至少对我而言)重定向。

我认为这将是一个微不足道的问题,因为我真正想做的就是将所有对 www.example.com 的根的请求转发到一个子目录,但我花了几个小时寻找答案,但没有一个是完全正确的。我很难相信我是唯一遇到此问题的人。

如果此问题之前已在此处得到解答,我深表歉意,我进行了搜索和拖网,但找不到合适的答案。请问有人能解释一下吗?

【问题讨论】:

    标签: apache mod-rewrite


    【解决方案1】:

    终于自己解决了这个问题。事实证明,即使在 .htaccess 文件被删除之后,Apache 也会记住文件夹设置。所以我玩了这么久,我之前的一些尝试已经完全污染了配置。

    我解决了这个问题,首先将所有.htaccess 文件注释掉,除了RewriteEngine off,这使一切(几乎)恢复正常。然后我设法通过编写以下配置来获得所需的效果:

    重写引擎开启 重写规则 ^$ www/ [L] 重写规则 (.*) www/$1 [L]

    最后,我在www 目录中创建了另一个.htaccess 文件,其中包含:

    重写引擎关闭

    现在一切似乎都按我最初想要的那样工作了。可惜花了这么长时间才解决所有这些问题!

    【讨论】:

      猜你喜欢
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      • 2011-06-28
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      相关资源
      最近更新 更多