2016-02-01 80 views
1

我試圖執行這樣的重定向:如何執行沒有.php擴展名的php重定向?

header("Location: application/controllers/backend"); 

當然,但不工作「導致循環警告,出現在頁面上。相反,如果我執行:

header("Location: application/controllers/backend.php"); 

這個工程,但我不想.php擴展名。爲什麼?因爲我工作在一個Route上,允許我在服務器的當前uri的基礎上加載正確的控制器。我如何實現這一目標?

這是我的.htaccess實際上:

RewriteEngine On 
RewriteBase /AppFolderName/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.+)$ index.php?uri=$1 [QSA,L] 
+0

'標題( 「位置:應用/控制器/後端/」); '試着在後端設置斜線。 – Naumov

+0

對不起,在應用 – Naumov

回答

1

,如果你有一個有效的URL重寫htaccess你可以這樣做:

header("Location: http://www.yourwebsite.com/application/controllers/backend"); 

這個功能讓你完整的URL爲您的項目:

function url(){ 
    if(isset($_SERVER['HTTPS'])){ 
     $protocol = ($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off") ? "https" : "http"; 
    } 
    else{ 
     $protocol = 'http'; 
    } 
    return $protocol . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 
} 

所以,重定向代碼應該是:

$base_url = url(); 
header("Location: ".$base_url."/application/controllers/backend"); 
+0

之前斜槓這樣給我頁面生成一個重定向循環爲什麼? –

0

嘗試此

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/$ $1.php 
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule (.*)$ /$1/ [R=301,L] 

或此)

Options +MultiViews 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 
相關問題