【发布时间】:2018-02-15 09:56:07
【问题描述】:
我现在正在学习 htaccess 文件,但遇到了一个我似乎无法解决的问题。
此时我正在使用这个 htacces 来制作一个干净的 url:
RewriteEngine on
RewriteRule ^([0-9a-z-A-Z]+)/([0-9a-z-A-Z]+) ?menu=$1&page=$2.php [NC,L]
我有 2 个可能的文件位置:
/menu/page/menu/Controller/Page
我希望它们都在 URL 中显示:/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 以及其他一些教程
【问题讨论】:
-
有点不清楚。浏览器中显示的 URL 是什么?两种情况下应该重写为什么?
-
如果我不清楚,我会在问题中添加它对不起
-
@anubhava 我猜我已经添加了它,并且问题更加详细。
-
“我有 2 个可能的文件位置” - 为什么,这背后的逻辑是什么?如果两者都存在,应该优先选择哪一个? “起初我以为我可以简单地使用 if 语句来做到这一点。但我不能,因为没有什么可以检查的” - 服务器文件系统中是否存在特定文件是您要检查的,不是吗?那“没什么可检查的”是怎么回事?
-
@CBroe 我确定有一种方法可以“检查”文件夹是否存在。但正如我所说,我刚刚开始学习 htaccess,这就是我问的原因。要找出这些事情是可能的,正如阿努巴瓦在他的回答中所表明的那样,这实际上是可能的,所以现在我可以尝试自己创造这个。它背后的逻辑(我认为这是逻辑)是我的菜单项只是按钮和菜单项,子菜单项位于更深层。