2017-08-16 84 views
1

我的网站的.htaccess文件有问题。我想迫使人们使用https我的网站,所以我已经加入这个我已有的.htaccess:强制Https重写规则.htaccess给出403错误

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错误:

You don't have permission to access/on this server.

回答

0

我通过重新加载我的ssl证书来解决它!

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,以便它发送301的HTTP状态代码并执行重定向而不是重写。如果没有flag R=301,服务器只会重写连接,就好像用户通过新URL连接一样(这就是完成URL的方式)。我还添加了L flag来表示每个规则不应该在其之后处理其他规则。

额外RewriteEngine On也被取出,但这可能不是您的问题的原因。

我所做的最后一次更新是对几个RewriteRules,我所做的只是确保它们在同一行上,因为它们已被分解为两个。

你可以阅读更多关于Apache的重写标记here

+0

不,它可悲的是不工作。 (感谢您的帮助,虽然)。我要问我的虚拟主机这件事。 (或者你有另一个想法?)。再次非常感谢您的帮助。 –

+0

出于好奇,它完成了https重定向吗?你知道Web服务器是否正确安装了HTTPS?在Apache中,它通常需要2个不同的虚拟主机(一个用于端口80,一个用于443)。如果重定向完成,那可能是你的问题。 – Charles

+0

我遵循我的网站主持人指南,了解如何在我的网站上启用https,所以我制作了让我们加密的证书等等。那么我不得不添加重定向规则。强制https上的用户。 –