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



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

----博客

--------.访问

----苹果

----.访问

现在我已经在我的/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 文件正在制造问题。

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

希望有人发现这个帮助是完整的。

试试这个:

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

让我知道它是否有效。

相关内容

最新更新