存在相同名称的文件时,HTACCESS不起作用

时间:2018-07-03 09:09:46

标签: php .htaccess subdirectory

我有一个小问题,可能很容易解决,但我不知道怎么做。我具有以下文件夹结构:

  • 主要网站 -网站内容 -更多内容 -称为cms的子文件夹 --- index.php --- content.php(当然还有更多)

index.php文件如下:

if(isset($_GET['page'])){
    require_once($_GET['page'].'.php');
}

我对子文件夹的HTACCESS:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^([\w-]+)/?$ index.php?page=$1 [QSA,L]

我试图在index.php中回显我的$ _GET ['page']变量,并且每当我输入如下内容时:www.domain.com/cms/r它给了我$_GET['page'] = r。但是,如果$ _GET变量作为文件存在,则会出现404错误:www.domain.com/cms/content,该错误应该只显示我的content.php文件。

我到底在做什么错?感谢所有帮助:)

编辑:

看来我可以使$_GET正常工作,但是它忽略了是否存在名为$_GET的文件。 www.domain.com/fluidify/content无法正常工作,因为文件夹中有一个名为content.php的文件,但是www.domain.com/fluidify/testget给出了testget作为输出。

1 个答案:

答案 0 :(得分:0)

如果您想拥有SEO友好的URL,则应使用类似这样的内容-无论URL是否匹配现有文件,这都会将所有内容重定向到您的路由脚本。

RewriteEngine On

RewriteRule ^(.*)$ index.php?page=$1 [QSA,L]