【问题标题】:How to direct a Domain to a subfolder on the server it points to in apache htaccess如何将域定向到它在 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 出现。

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

谢谢

【问题讨论】:

    标签: apache .htaccess redirect mod-rewrite apache2.4


    【解决方案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 中尝试更新规则
    猜你喜欢
    • 2016-07-16
    • 2013-11-22
    • 2013-12-03
    • 2013-11-08
    • 1970-01-01
    • 2012-11-23
    • 2022-01-17
    • 2015-12-18
    • 2010-12-07
    相关资源
    最近更新 更多