.htaccess RewriteRule仅在不存在具有该名称的文件时起作用

时间:2019-02-04 14:41:00

标签: .htaccess mod-rewrite url-rewriting

我正在尝试使用htaccess重写规则,如下所示:

  

如果url = http://example.com/admin/dashboard   加载文件http://example.come/admin/dashboard.php

我有这个文件结构

example.com/
|-- admin/
    |-- .htaccess
    |-- dashboard.php

如果我将其写在.htaccess文件中

RewriteEngine On
RewriteRule ^test$ dashboard.php

并在浏览器http://example.com/admin/test上输入此地址

我正确看到了dashboard.php文件的内容

但是如果我将.htaccess文件更改为

RewriteEngine On
RewriteRule ^dashboard$ dashboard.php

然后在浏览器中输入http://example.com/admin/dashboard,我会得到一个“未找到”页面

为什么RewriteRule仅在我的URL指向不存在的文件时起作用?

1 个答案:

答案 0 :(得分:0)

关闭.htaccess中的MultiViews选项,该选项可能已在服务器配置中打开。

Options -MultiViews    
RewriteEngine On

RewriteRule ^dashboard/?$ dashboard.php [L,NC]

您也可以在RewriteBase行下方添加RewriteEngine

RewriteBase /admin/