2016-08-05 56 views
1

我的htaccess当前删除了php文件扩展名和尾部的斜杠。这很好。更新htaccess以强制https并删除.php导致重定向循环

不过,我刚刚买了一个SSL证书,并遵循these instructions强迫任何URL炫耀我新买的SSL证书(该网站处理个人和财务信息,所以这是一个很大的卖点)。

下面是我的.htaccess文件,其中https://在# NEW CODE块中重写。但是,当我尝试加载网站时,我在Chrome中收到了ERR_TOO_MANY_REDIRECTS响应。

RewriteEngine On 

# NEW CODE 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://example.com/$1 [R,L] 
# END NEW CODE 

# Unless directory, remove trailing slash 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/$ https://example.com/$1 [R,L] 

# Redirect external .php requests to extensionless url 
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ 
RewriteRule ^(.+)\.php$ https://example.com/$1 [R=301,L] 

# Resolve .php file for extensionless php urls 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

.htaccess文件不是我的forté,所以任何帮助将不胜感激!

+0

,一切工作正常没有新的代码,没有重定向循环? –

+2

在这个Web服务器前面有一个负载平衡器吗? –

+0

@DusanBajic我不知道服务器上有任何负载均衡器,并且一切工作正常(即没有新代码部分,http URL而不是https) – tristanojbacon

回答

0

尝试改变:

# NEW CODE 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://example.com/$1 [R,L] 
# END NEW CODE 

到:

# NEW CODE 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule ^(.*)$ https://example.com/$1 [R,L] 
# END NEW CODE 
相关问题