首先,我道歉。我查了很多问题,但到目前为止没有任何问题。我不知道为什么。
我有一个网站www.mysite.it
,一个网址是
www.mysite.it/home.php?pagina=home
我想看看
www.mysite.it/home
或www.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;
等
答案 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);