重定向到所请求子文件夹的index.php

时间:2013-10-18 02:52:28

标签: php apache .htaccess redirect

我需要重定向到index.php所请求的目录。

所以我需要:

http://www.site.com/folder/files/hello.php

重定向到:

http://www.site.com/folder/files/index.php

对于任何子文件夹也是如此:

http://www.site.com/folder/files/pages/other/hello.php

重定向到:

http://www.site.com/folder/files/pages/other/index.php

3 个答案:

答案 0 :(得分:7)

(技术上)正确的方式

构造一个由当前方案(http / https / etc)组成的URI,主机名和当前文件的路径,并发出 Location 标头。

$url = sprintf('%s://%s%s/index.php',
    $_SERVER['SERVER_PORT'] == 80 ? 'http' : 'https',
    $_SERVER['SERVER_NAME'], rtrim(dirname($_SERVER['PHP_SELF']), '/'))
header("Location: $url");
exit;

这是因为位置标头URI应该是完整且绝对的。从技术上讲,不允许使用相对URI,但是有一个草案规范设置可以更改它。

务实的方式

只需发出相对位置标头,因为它最有效。

header('Location: index.php');
exit;

答案 1 :(得分:0)

这可以在.htaccess中完成,因此不需要任何PHP代码。

启用mod_rewrite.htaccesshttpd.conf,然后将此代码放入DOCUMENT_ROOT/.htaccess文件中:

RewriteEngine On
RewriteBase /

RewriteRule (.+?)/[^./]+\.php$ /$1/index.php [L,NC]

答案 2 :(得分:0)

要将folder/files/hello.php重定向到folder/files/index.php,请在folder/files/hello.php文件中使用以下几行。

<?php

$URL =  'http://'.$_SERVER['SERVER_NAME'].'/folder/files/index.php';

header("Location:  $URL ");

?>

使用类似的语法进行下一个重定向。