我已设置重写规则,以便使用以下规则将domain.com
流量定向到www.domain.com
:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
根据我的有限理解,$1
中的RewriteRule
应与domain.com/
之后的任何内容匹配,然后放在我重写的网址www.domain.com/
的末尾。
例如domain.com/abc
应该变为www.domain.com/abc
。
然而,无效。如果我浏览到domain.com/abc
,则根本不会重写此路径,而我只是domain.com/abc
而没有www
。
根据我的理解,我已经做了很多阅读,只是为了弄清$1
应该照顾这个。
任何人都可以解释为什么它不起作用,因为我怀疑它应该是?感谢。
答案 0 :(得分:0)
事实证明,因为我使用的是Wordpress和W3 Cache插件,所以我只是将代码放在我的.htaccess文件的错误位置。
代码应放在# BEGIN Wordpress
代码块中,并且在Wordpress已有的现有规则之前。
现有代码应如下所示:
# BEGIN Wordpress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
#END Wordpress
我将原始代码添加到此处,如下所示:
# BEGIN Wordpress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
#END Wordpress
这解决了我上面描述的问题。感谢评论员激发了我的思考过程。