我已经在服务器上的子目录下上传了我的网站,结构看起来像这样
根
----博客
--------.访问
----苹果
----.访问
现在我已经在我的/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]
让我知道它是否有效。