我的网站的.htaccess文件存在问题。我想强迫人们为我的网站使用https,所以我已将此添加到我已经存在的.htaccess中:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
最终结果:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)(|/)$ index.php?url=$1
RewriteRule ^news/([a-zA-Z0-9_-]+)(|/)$ index.php?url=news&id=$1
RewriteRule ^home/([a-zA-Z0-9_-]+)(|/)$ index.php?url=home&user=$1
RewriteRule ^swf/plex-imaging/badge/([a-zA-Z0-9_-]+)(|/)$ swf/plex-
imaging/badge.php?badge=$1
RewriteRule ^register/([a-zA-Z0-9_-]+)(|/)$ index.php?
url=register&userref=$1
RewriteRule ^newpassword/([a-zA-Z0-9_-]+)(|/)$ index.php?
url=newpassword&key=$1
但现在我收到403错误:
您无权访问此服务器上的内容。
答案 0 :(得分:0)
试试这个
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteRule ^([a-zA-Z0-9_-]+)(|/)$ index.php?url=$1 [L]
RewriteRule ^news/([a-zA-Z0-9_-]+)(|/)$ index.php?url=news&id=$1 [L]
RewriteRule ^home/([a-zA-Z0-9_-]+)(|/)$ index.php?url=home&user=$1 [L]
RewriteRule ^swf/plex-imaging/badge/([a-zA-Z0-9_-]+)(|/)$ swf/plex-imaging/badge.php?badge=$1 [L]
RewriteRule ^register/([a-zA-Z0-9_-]+)(|/)$ index.php?url=register&userref=$1 [L]
RewriteRule ^newpassword/([a-zA-Z0-9_-]+)(|/)$ index.php?url=newpassword&key=$1 [L]
我已为您的HTTPS重定向更新了RewriteRule,以便它发送HTTP状态代码301并执行重定向而不是重写。如果没有flag R=301
,服务器只会重写连接,就像用户通过您提供的新URL连接一样(这就是完成URL的方式)。我还添加了L
flag来表示每条规则都不应该在其后处理其他规则。
额外的RewriteEngine On
也被取出,但这可能不是您问题的原因。
我做的最后一次更新是针对几个RewriteRules,我所做的只是确保它们在同一条线上,因为它们被分解为两个。
您可以阅读有关apache的重写标志here的更多信息。
答案 1 :(得分:0)
我通过重新加载我的ssl证书来修复它!