我在PHP上有一个自定义构建的非CMS网站。
我目前设置的.htaccess的方式是允许我使用不带“ .php”部分的网址,并将其重定向到301,将所有非www请求都重定向到www:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L,QSA]
现在我们要切换到HTTPS。
如何在.htaccess中从http://
到https://
进行正确的SEO友好重定向?
我尝试将第三个字符串替换为
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
但这并不能解决问题...
还可以选择是否有方法为.php请求设置301重定向,以重定向到非.php变体?尽管看起来这意味着重定向到相同的页面,但不确定这样做是否SEO安全,或者甚至会导致重定向循环?
答案 0 :(得分:0)
您可以使用以下htaccess规则(只需在第二个RewriteCond中将example\.com
替换为yourdomain\.com
)
RewriteEngine On
#301 redirect from http to https + non-www to www
RewriteCond ℅{HTTPS} off [OR]
RewriteCond ℅{HTTP_HOST} ^example\.com$ [NC]
RewriteCond ℅{HTTP_HOST} (?:www\.)?(.+)$
RewriteRule ^ https://www.℅1℅{REQUEST_URI} [NE,L,R]
#remove .php extension
#redirect to remove .php from URLs
RewriteCond ℅{THE_REQUEST} /(.+)\.php [NC]
RewriteRule ^ /℅1 [L,R=301]
#handle extension less php URLs
RewriteCond ℅{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)/?$ /$1.php [L]