将example.com重定向到example.com/blog

时间:2018-01-17 05:50:40

标签: php apache .htaccess redirect mod-rewrite

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

----博客

--------。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文件存在问题。

2 个答案:

答案 0 :(得分:2)

试试这个:

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

让我知道它是否有效。

答案 1 :(得分:2)

在@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]

希望有人能够充分发现这个帮助。