【发布时间】:2016-11-01 21:34:14
【问题描述】:
我花了几个小时试图解决这个ERR_TOO_MANY_REDIRECTS,但没有成功。
当我在未登录的情况下访问我的网站 URL 时会发生这种情况。因此,如果我没有启动会话,我将被重定向到 -> mywebsite.com/site/login 或只是 /login
下面的 PHP 代码:
if ( isset($_GET['p2k_url']) && $_GET['p2k_url'] ) {
if ( strstr($_GET['p2k_url'], '/') ) {
$url = explode('/', $_GET['p2k_url']);
} else {
$url[0] = $_GET['p2k_url'];
}
if ( !isset($url[1]) || !$url[1] ) {
$url[1] = 'index';
}
}
if ( $url[0] != 'login' && !$__usuCod ) {
header('Location: /site/login.php');
die();
}
if ( file_exists(SITE_DIR.DS.'_'.$url[0].DS.$url[1].'.php') ) {
include SITE_DIR.DS.'_'.$url[0].DS.$url[1].'.php';
} else {
if ( file_exists(SITE_DIR.DS.'_'.$url[0].DS.'no404.php') ) {
include SITE_DIR.DS.'_'.$url[0].DS.'index.php';
} else {
include SITE_DIR.DS.'_404'.DS.'index.php';
}
}
就在这里:if ( $url[0] != 'login' && !$__usuCod ) {
我的 login.php 只是一个带有表单的简单 html 页面。没什么好担心的。
虽然我的主要 .htaccess 在下面,但我认为它可能有一些东西:
选项-索引
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ index.php?p2k_url=$1 [QSA,L]
</IfModule>
为了调试和查找错误,当我运行 tail -f access_log 时,我得到的只是简单的访问请求:
127.0.0.1 - - [01/Nov/2016:11:16:28 -0200] "GET /site/login.php HTTP/1.1" 302 -
error_log 不会出现任何问题。
做研究我发现这是 WP 的一个非常常见的问题 - 这里不是这种情况。有什么想法吗?
谢谢
【问题讨论】:
-
if ( isset($_GET['p2k_url']) && isset($_GET['p2k_url']) ) {if ( strstr($_GET['p2k_url'], '/') ) {$url = explode('/', $_GET['p2k_url']);} else {$url[0] = $_GET['p2k_url'];}if ( !isset($url[1])) {$url[1] = 'index';}} if ( $url[0] !== 'login' && !$__usuCod ) {header('Location: /site/login.php');die();} if ( file_exists(SITE_DIR.DS.'_'.$url[0].DS.$url[1].'.php') ) {include SITE_DIR.DS.'_'.$url[0].DS.$url[1].'.php';} else {if ( file_exists(SITE_DIR.DS.'_'.$url[0].DS.'no404.php') ) {include SITE_DIR.DS.'_'.$url[0].DS.'index.php';} else {include SITE_DIR.DS.'_404'.DS.'index.php';}} -
只需将
RewriteCond %{REQUEST_FILENAME} !-d和RewriteCond %{REQUEST_FILENAME} !-f添加到您的htaccess 文件中。 -
@Federkun 我已经这样做了,但没有任何改变......