【问题标题】:htaccess causing redirect loophtaccess 导致重定向循环
【发布时间】:2014-06-12 14:32:43
【问题描述】:

所以我将我的应用程序从一台主机迁移到另一台主机。大多数应用程序通过“漂亮的网址”工作,其中 /login.php 变为 /login (我通过 $_SERVER['REQUEST_URI'] 在我的 php 中访问),但是在切换主机后,我的 htaccess 代码不再起作用( chrome 给了我一个重定向循环错误)。

这是代码:

 Options +FollowSymLinks  
 RewriteEngine On  

 RewriteCond     %{SERVER_PORT} ^80$
 RewriteRule     ^(.*)$ http://%{SERVER_NAME}%{REQUEST_URI} [L,R]

 RewriteCond %{SCRIPT_FILENAME} !-d  
 RewriteCond %{SCRIPT_FILENAME} !-f  

 RewriteRule ^.*$ ./index.php  

知道可能出了什么问题吗?

【问题讨论】:

  • 您能解释一下RewriteCond %{SERVER_PORT} ^80$ RewriteRule ^(.*)$ http://%{SERVER_NAME}%{REQUEST_URI} [L,R] 的作用吗?对我来说它看起来完全没用......
  • @Peter RewriteCond %{SERVER_PORT} ^80$ = 查找端口 80 上的任何连接。RewriteRule ^(.*)$ http://%{SERVER_NAME}%{REQUEST_URI} [L,R] = 将所有^(.*)$ 重写为http://%{SERVER_NAME}%{REQUEST_URI} 并使其成为[L] 最后一条规则,即@987654328 @重定向。如果要使其永久化,请将 [L,R] 更改为 [L,R=303] `303 是“永久移动”的 HTTP 代码
  • @OCIA 我理解语法,如果端口 80 有连接,将其重定向到端口 http://,默认端口 (80) = 无用,无限循环

标签: php .htaccess redirect


【解决方案1】:

如果你想将 HTTP 重定向到 HTTPS:

RewriteCond     %{SERVER_PORT} ^80$
RewriteRule     ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

RewriteCond     %{SCRIPT_FILENAME} !-d  
RewriteCond     %{SCRIPT_FILENAME} !-f
RewriteRule     ^(.*)$ index.php/$1

如果你想将 HTTPS 重定向到 HTTP:

RewriteCond     %{SERVER_PORT} ^443$
RewriteRule     ^(.*)$ http://%{SERVER_NAME}%{REQUEST_URI} [L,R]

RewriteCond     %{SCRIPT_FILENAME} !-d  
RewriteCond     %{SCRIPT_FILENAME} !-f
RewriteRule     ^(.*)$ index.php/$1

【讨论】:

  • 编辑了几次以更匹配问题的来源(包括对RewriteRule ^(.*)$ index.php/$1的更改)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
  • 2014-03-23
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
  • 2019-04-01
  • 1970-01-01
相关资源
最近更新 更多