如何将域定向到它在 apache htaccess 中指向的服务器上的子文件夹

Posted

技术标签:

【中文标题】如何将域定向到它在 apache htaccess 中指向的服务器上的子文件夹【英文标题】:How to direct a Domain to a subfolder on the server it points to in apache htaccess 【发布时间】:2018-06-30 08:02:47 【问题描述】:

我有一个 Web 服务器,其中有多个指向它的域。我想要一个域,让我们将其命名为 www.example.com 以进入我的 Doc Root 中的文件夹 /example(例如 /var/www/example)。我在我的 Doc Root 中使用这个 .htaccess 代码来做到这一点:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteCond %HTTP_HOST ^(www.)?example.com$ [NC]
    RewriteRule ^(/)?$ example [R=301,L]
</IfModule>

现在在浏览器中输入域可以将我带到正确的位置,但我在浏览器的 url 栏中没有看到 www.example.com 或 example.com,而是看到 [IP-Address]/example(例如 1.2. 3.4/示例)。当然,我希望显示域名 www.example.com,如果我浏览特定文件,例如/example/folder/index.php 我希望 (www.)example.com/folder/index.php 出现。

我已经尝试了其他有关重定向到子文件夹的堆栈溢出问题的一些建议修复,但所有这些似乎都引发了上述不需要的行为。任何帮助将不胜感激。

谢谢

【问题讨论】:

【参考方案1】:

您可以使用这些规则:

RewriteEngine on
RewriteBase /

RewriteCond %HTTP_HOST ^(?:www\.)?example\.com$ [NC]
RewriteRule ^(?!band/).*$ /band/$0 [L,NC]

确保使用新的浏览器进行测试。

(?!band/) 是一个负前瞻,以防止在请求已经以 /band/ 开头时重定向。

【讨论】:

你好anubhava,谢谢你的回复。不幸的是,问题仍然存在。在您更改后,我仍然有一个形式为 IP-Address/example 的地址。也许我的 apache 配置有问题。 我已删除 R=301 标志。在新浏览器或命令行 curl 中尝试更新规则

以上是关于如何将域定向到它在 apache htaccess 中指向的服务器上的子文件夹的主要内容,如果未能解决你的问题,请参考以下文章

Htaccess 规则将域重定向到 index.html

使用.htaccess将域重定向到子文件夹

.htaccess 将域重定向到子目录而不更改 URL

将域重定向到另一个域并更改 url [关闭]

如何将域从www重定向到非www? [复制]

apache_conf 将域重定向到子域