我有一个网站,我试图完全从http
重定向到https
。
我需要将通过http
到达该网站的所有用户重定向到https
上的同一页面。
该网站托管在提供商的共享主机上。由于已安装域的SSL证书,因此已为域分配了新的IP地址。
我被告知应将以下代码添加到我的.htaccess
文件中。还有一些处理SEO友好URL的规则。
RewriteEngine On
RewriteBase /
# enforce https and www
RewriteCond %{SERVER_PORT} !=443 [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [L,NE,R=302]
# skip further rules for files and directories
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
# internal rewrite rules
RewriteRule ^([\w-]+)/([\w-]+)/?$ page.php?venue=$1&artist=$2 [L,QSA]
RewriteRule ^([\w-]+)/?$ page.php?venue=$1 [L,QSA]
由于某种原因,将此代码添加到.htaccess
文件会导致重定向循环错误。我已尝试过其他Stack Overflow帖子中建议的RewriteCond %{SERVER_PORT} !=443
行的变体,但似乎没有任何效果。
有没有人有解决方案?
答案 0 :(得分:0)
我从我的服务提供商处获得了这个代码,似乎使用php
<?php
if ($_SERVER['HTTP_X_FORWARDED_SSL'] == '1') { } else { $redirect = "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; header("Location: $redirect"); } ?>
我可以为永久重定向添加以下内容
header("HTTP/1.1 301 Moved Permanently");
答案 1 :(得分:0)
您可以在root .htaccess中使用此代码:
RewriteEngine On
RewriteBase /
# enforce https and www
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteRule ^ https://www.example.com%{REQUEST_URI} [L,NE,R=302]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=302]
# skip further rules for files and directories
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
# internal rewrite rules
RewriteRule ^([\w-]+)/([\w-]+)/?$ page.php?venue=$1&artist=$2 [L,QSA]
RewriteRule ^([\w-]+)/?$ page.php?venue=$1 [L,QSA]