htaccess没有重定向简易网址和php页面

时间:2014-08-04 20:33:14

标签: php apache .htaccess mod-rewrite redirect

首先,我道歉。我查了很多问题,但到目前为止没有任何问题。我不知道为什么。

我有一个网站www.mysite.it

,一个网址是

www.mysite.it/home.php?pagina=home

我想看看

www.mysite.it/homewww.mysite.it/home.php是相同的

我在.htaccess中添加了这个:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)/$ home.php?pagina=$1

我在php中有这个表达式:

<?php 
$get= @$_GET ['pagina'];
$pagina = (isset($_GET['pagina']) ? $_GET['pagina'] : 'home') . '.php';

    if(file_exists($get)){
        include($pagina);
    } else {
        include("404.php");
    }

 switch ($get){
            default :
            include ('contenuto/home.php');
            break;

            case "tournament":
            include ('torneo/torneo.php');
            break;

            case "arena":
            include ('contenuto/modalita/arena.php');
            break;

2 个答案:

答案 0 :(得分:1)

您的RewriteRule仅匹配以&#34; /&#34;结尾的网址。您需要更改重写规则。考虑使用R指令以及L。

RewriteRule ^(.*)/$ home.php?pagina=$1 [L]
RewriteRule ^(.*)$ home.php?pagina=$1 [L]

然后改变你的逻辑。 404 if块应该低于大小写。看起来你正在弄清楚你在多个地方要去哪个页面。我试着在下面解决这个问题。此外,使用调试语句来确定变量是否按您希望的方式设置。还要记住,pagina必须匹配磁盘上的实际文件,包括目录。例如,如果你要求托尼,它就不会被发现。锦标赛仅有效,因为它在开关区中有一个特殊列表。

$get = @$_GET['pagina'];
if (!isset($_GET['pagina'])) {
    $get = 'home';
    $pagina = 'contenuto/home.php';
} else {
    $pagina = $get . '.php';
}

// debug
echo $get . '//' . $pagina

switch ($get) {
        default :
        $pagina = 'contenuto/home.php';
        break;

        case "tournament":
        $pagina = 'torneo/torneo.php';
        break;
}

if (file_exists($pagina)) {
    include($pagina);
} else {
    include("404.php");
}

答案 1 :(得分:0)

在这里检查是否存在一个文件,然后包含另一个文件:

if(file_exists($get)){
    include($pagina);

这不起作用。必须是:

if(file_exists($pagina)){
    include($pagina);