【问题标题】:.htaccess RewriteRule works only if no file exists with that name.htaccess RewriteRule 仅在不存在具有该名称的文件时才有效
【发布时间】:2019-02-04 14:40:59
【问题描述】:

我正在尝试使用这样的 htaccess 重写规则:

如果网址 = 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 指向不存在的文件时才有效?

【问题讨论】:

    标签: .htaccess mod-rewrite url-rewriting


    【解决方案1】:

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

    Options -MultiViews    
    RewriteEngine On
    
    RewriteRule ^dashboard/?$ dashboard.php [L,NC]
    

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

    RewriteBase /admin/
    

    【讨论】:

    • 我的虚拟主机配置中有一个 MultiViews 选项,谢谢!
    猜你喜欢
    • 2014-06-08
    • 2017-02-04
    • 1970-01-01
    • 2017-11-12
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    相关资源
    最近更新 更多