【问题标题】:Redirect example.com to example.com/blog将 example.com 重定向到 example.com/blog
【发布时间】:2018-01-17 05:50:40
【问题描述】:

我已将我的网站上传到我服务器上的一个子目录下,结构看起来像这样

----博客

--------.htaccess

----苹果

----.htaccess

现在我在 /blog/.htaccess 文件中编写了一条规则,它将用户重定向到

https://www.example.com/blog/

我通过添加以下规则来做到这一点。

RewriteEngine On
RewriteBase /blog/

RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L,NE]

到目前为止一切都很好,它的工作方式完全符合要求,现在真正的问题来了。用户希望当任何人在没有前一个博客的情况下访问域时,它将添加 /blog/ 并将用户重定向到博客站点,并且此规则不应影响任何子域意味着如果

用户输入网址。

example.com

他应该被重定向到。

https://www.example.com/blog/

当他输入网址时。

apple.example.com

他应该重定向到

apple.example.com

现在为了做到这一点,我正在编写以下规则,但它不起作用,规则如下所示。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule (.*) https://example.com/$1 [R=301,L]
RewriteRule ^$ /blog/ [L]

我不知道我做错了什么。

我添加了很多细节,因为我认为可能是博客目录中的 .htaccess 文件有问题。

【问题讨论】:

    标签: php apache .htaccess redirect mod-rewrite


    【解决方案1】:

    在@Twinkle 的帮助下发现了问题,真正的问题是我正在添加

    RewriteRule ^$ /blog/ [L]
    

    由于明显的原因我不需要,通过删除此规则并将我当前的规则更改为以下规则解决了我的问题。

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^example\.com$
    RewriteRule (.*) https://example.com/blog/ [R=301,L]
    
    RewriteCond %{HTTP_HOST} ^www.example\.com$
    RewriteRule (.*) https://example.com/blog/ [R=301,L]
    

    希望有人觉得这份帮助很完整。

    【讨论】:

      【解决方案2】:

      试试这个:

      RewriteEngine on
      RewriteCond %{HTTP_HOST} ^example.com 
      RewriteRule ^(.*)$ http://www.example.com/blog/$1 [L,R=301,NC]
      

      让我知道它是否有效。

      【讨论】:

      • 不,先生,它没有用,但通过从 RewriteRule 中删除 NC 对我来说仍然有用,我会给你 +1 来为我找到问题。谢谢
      猜你喜欢
      • 2020-06-20
      • 1970-01-01
      • 2018-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 2011-02-28
      • 2014-10-17
      相关资源
      最近更新 更多