强制Https RewriteRule .htaccess给出403错误

时间:2017-08-16 23:26:11

标签: php apache .htaccess mod-rewrite

我的网站的.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错误:

  

您无权访问此服务器上的内容。

2 个答案:

答案 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证书来修复它!