我已将我的网站上传到我服务器上的子目录下,结构看起来像这样
根
----博客
--------。htaccess的
----苹果
----。htaccess的
现在我在/blog/.htaccess文件中写了一条规则,将用户重定向到
我通过添加以下规则来完成此操作。
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
他应该被重定向到。
当他进入网址时。
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文件存在问题。
答案 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]
希望有人能够充分发现这个帮助。