我正在尝试执行这样的重定向:
header("Location: application/controllers/backend");
但当然不起作用,因为页面上出现循环警告。相反,如果我执行:
header("Location: application/controllers/backend.php");
这有效,但我不想要.php
扩展名。为什么?因为我在一条路由上工作,该路由允许我在服务器的当前 uri 的基础上加载正确的控制器。我怎样才能做到这一点?
这实际上是我的.htaccess:
RewriteEngine On
RewriteBase /AppFolderName/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?uri=$1 [QSA,L]
如果您有有效的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");
试试这个
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]