htaccess if文件夹是否存在检查文件夹

时间:2018-02-15 09:56:08

标签: php .htaccess url

此刻我正在学习htaccess文件,而且我遇到了一个似乎无法解决的问题。

此时我正在使用这个htacces来制作一个干净的网址:

RewriteEngine on
RewriteRule ^([0-9a-z-A-Z]+)/([0-9a-z-A-Z]+) ?menu=$1&page=$2.php [NC,L]

我有两个可能的文件位置:

  1. /menu/page
  2. /menu/Controller/Page
  3. 我希望他们只在网址

    中显示:/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和其他一些教程

1 个答案:

答案 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'];

代码。