[英]PHP & .htaccess redirection loop [does header(location: url) consult .htaccess?]
我目前將所有請求轉發到單個.php
文件:
Options +FollowSymLinks
Options -Multiviews
Options All -Indexes
RewriteEngine On
RewriteRule ^(.*)$ urls.php [L,QSA]
為了簡單起見,假設urls.php
頁面如下:
<?php
if(condition) {
header( "Location: index.php" );
} else {
header( "Location: somewhere.php" );
}
die();
?>
發出請求時,它進入重定向循環,我認為這是因為這是一個從urls.php
到重定向到該頁面並再次返回的urls.php
無休止的循環。
問題:
-> header()
函數是否始終查閱.htaccess
文件,或者是否有跳過該文件並直接轉到url的方法?
->如果總是參考它,是否可以使用其他PHP方法來實現所需的功能?
而不是重定向,您應該使用“ include”功能提取網址並進行相應的路由。 您可以在路由之前應用邏輯。
每個HTTP請求都使服務器讀取.htaccess文件。
要回答您的問題:
header()
輸出一個HTTP 301頭,該頭會生成另一個請求。 include()
對應的頁面,而不是使用header()
重定向到該頁面。 注意:
正如@goldlife在評論中指出的那樣,您的規則和頁面一起生成了一個循環,因為:
header()
函數將url.php
重定向到index.php
.htaccess
將index.php
重寫為url.php
要打破此循環,您應該刪除這兩個操作之一(我投票贊成刪除第一個操作)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.