我想将所有非www页面重定向到https://,但只有主页按预期方式执行。也就是说,http://kraftgiftbox.com将按照我的预期重定向到https://www.kraftgiftbox.com/,这没关系!但是,与https://kraftgiftbox.com/odd-shaped-boxes.html一样,子级别页面都不会重定向到www版本。我有一个.htaccess文件如下:
RewriteOptions inherit
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^(.*)$ https://kraftgiftbox.com/$1 [R,L]
ErrorDocument 404 /404.shtml
RewriteCond %{HTTP_HOST} ^kraftgiftbox\.com$
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^/?$ "https\:\/\/www\.kraftgiftbox\.com\/" [R=301,L]
有人可以帮我纠正代码吗?谢谢!
最后一行规则导致了这一点,因为您只通过此RewriteRule ^/?$
捕获根请求,以实现您想要的尝试:
ErrorDocument 404 /404.shtml
RewriteOptions inherit
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?kraftgiftbox\.com$ [NC,OR]
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^(.*)$ https://www.kraftgiftbox.com/$1 [R=301,L]
上面的规则同时做了两个,强迫https
和www
。
注意清除浏览器缓存然后测试。