簡體   English   中英

PHP和.htaccess重定向循環[標頭(位置:url)是否咨詢.htaccess?

[英]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文件。

要回答您的問題:

  1. 是的, header()輸出一個HTTP 301頭,該頭會生成另一個請求。
  2. 解決方案include()對應的頁面,而不是使用header()重定向到該頁面。

注意:
正如@goldlife在評論中指出的那樣,您的規則和頁面一起生成了一個循環,因為:

  1. 使用header()函數將url.php重定向到index.php
  2. 反過來,您的.htaccessindex.php重寫為url.php

要打破此循環,您應該刪除這兩個操作之一(我投票贊成刪除第一個操作)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM