此刻我正在学习htaccess文件,而且我遇到了一个似乎无法解决的问题。
此时我正在使用这个htacces来制作一个干净的网址:
RewriteEngine on
RewriteRule ^([0-9a-z-A-Z]+)/([0-9a-z-A-Z]+) ?menu=$1&page=$2.php [NC,L]
我有两个可能的文件位置:
/menu/page
/menu/Controller/Page
我希望他们只在网址
中显示:/menu/page
所以我做到了。它在网址中显示了我想要的内容。但是因为我在我的菜单中引用了第二个/menu/Controller/Page
我得到了这个错误:
警告:include(Partials / Programmeren / Opdracht1Restwaarde.php):无法打开流:第20行没有此类文件或目录。
这是我的索引页面:
<?php
session_start();
if( isset($_GET['page']) ){
//Heres a problem I know this. I only dont know how to fix it.
$cPagina = $_GET['menu'] . '/' .$_GET['page'];
} elseif( isset($_SESSION['laatstGebruiktePagina']) ) {
$cPagina = $_SESSION['laatstGebruiktePagina'];
} else {
$cPagina = 'indexcontent.php';
}
$_SESSION['laatstGebruiktePagina'] = $cPagina;
include "Partials/head.php";
include "Partials/navbar.php";
//problem include:
include("Partials/$cPagina");
?>
所以在上面的PHP代码中,我有一个地方指定文件的位置。但有时它应该是:$cPagina = $_GET['menu'] . '/controller/' .$_GET['page'];
。起初我以为我可以用if语句简单地做到这一点。但我不能因为没有什么可以检查的。
附加:我不一定要求一些代码来解决这个问题。即使是正确的方向上的一点,我可以阅读这个或东西,这是值得赞赏的。我正在阅读apache网站上的htaccess和其他一些教程
答案 0 :(得分:1)
您可以将规则更改为:
RewriteEngine On
RewriteRule ^(.+)/([0-9a-z]+)/?$ ?menu=$1&page=$2.php [NC,L]
这将解决这两种情况:
/menu/page
/menu/Controller/Page
并转发给:
?menu=menu&page=page.php
?menu=menu/Controller&page=page.php
分别使您可以继续使用:
$cPagina = $_GET['menu'] . '/' .$_GET['page'];
代码。