2016-02-01 51 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] 
相关问题