.htaccess htaccess non-www to www规则不起作用

cbjzeqam  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(130)

对于我的一个客户,我尝试了不同版本的.htaccess规则,将所有“非www”URL转发/重定向到相应的www。
我现在的.htaccess如下:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

# Redirection from non-www to www ---> latest rule used
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

AddHandler application/x-httpd-php81 .php .php5 .php4 .php3

所以...
我尝试了3个不同的规则没有任何结果(除了有一个301的主页只)。我的主机是SG。任何想法/帮助?
我尝试了不同的规则,就像上面发布的那样:

测试1(同上)

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

测试二

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

测试三

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

没什么可做的,这些规则都不能帮助我将所有非www网址重定向到www网址。

5lwkijsr

5lwkijsr1#

你把规则放错了地方。这个“重定向”规则需要放在.htaccess文件的顶部,* 在 * WordPress代码块之前(重写到WP前端控制器),即 * 在 * # BEGIN WordPress注解标记之前。
否则,您的任何“测试”都可以工作,尽管您在“test 2”中错误地重定向到http(而不是https)。您不需要在这里重复RewriteEngine On指令(这已经在.htaccess文件中发生了 * 稍后 *-在WordPress代码块中)。
首先使用302(临时)重定向进行测试,以避免潜在的缓存问题。
通过将规则放置在文件的末尾(即. after the WordPress front-controller pattern),那么它只会被处理为“主页”和静态资产-内部WordPress页面将不会被重定向。(“主页”,即根目录和静态资产不会被WordPress代码块处理,因此处理会下降到末尾的规则。

相关问题