[英].htaccess Redirecting Too Many Times Using Get Variables
我正在嘗試將用戶從我的主索引頁面重定向回索引頁面,但URL中帶有變量以交換加載的文件。 自從我添加變量以來,我得到的是太多的重定向。
這是我所做的:
RewriteCond %{TIME} <20171201000000
RewriteCond %{REMOTE_ADDR} !^00\.000\.000\.000
RewriteCond %{REQUEST_FILENAME} !(styles|images|javascript).+$
RewriteCond %{REQUEST_URI} !construction.php$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif|css|ttf|woff|js) [NC]
RewriteRule .* /construction [R=302,L]
這部分工作正常並重定向。 但是,我已經在索引頁面上添加了case switch
功能,以完全消除construction.php
頁面。 因此,現在我已將其重定向到此文件,並且它重定向得太多了。
RewriteCond %{TIME} <20171201000000
RewriteCond %{REMOTE_ADDR} !^00\.000\.000\.000
RewriteCond %{REQUEST_FILENAME} !(styles|images|javascript).+$
RewriteCond %{REQUEST_URI} !index.php?redirect=construction$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif|css|ttf|woff|js) [NC]
RewriteRule .* /index.php?redirect=construction [R=302,L]
我這樣做的原因是因為我要進行從construction
到maintenance
404
多次重定向。
是什么導致當我所做的只是更改URL時,這會導致重定向過多?
僅供參考,這里是整個index.php
文件:
<?php include $_SERVER['DOCUMENT_ROOT'] . "/settings/config.php"; ?>
<body>
<?php include $_SERVER['DOCUMENT_ROOT'] . "/php/header.php"; ?>
<?php
if (! isset($_GET['redirect']))
{
include($_SERVER['DOCUMENT_ROOT'].'/php/index.main.php');
} else {
$redirect = $_GET['redirect'];
switch($redirect)
{
case 'construction':
include($_SERVER['DOCUMENT_ROOT'].'/php/index.construction.php');
break;
case 'maintenance':
include($_SERVER['DOCUMENT_ROOT'].'/php/index.maintenance.php');
break;
}
}
?>
<div class="container-fluid">
<?php include $_SERVER['DOCUMENT_ROOT'] . "/php/footer.php"; ?>
</div>
</body>
</html>
您不能這樣做:
RewriteCond %{REQUEST_URI} !index.php?redirect=construction$ [NC]
因為查詢字符串不是測試uri的一部分。 改用:
RewriteCond %{REQUEST_URI} !index\.php$ [NC,OR]
RewriteCond %{QUERY_STRING} !redirect=(?:construction|404)$ [NC]
如果僅對此頁面使用redirect=construction
,則可以省略第一行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.