【问题标题】:Apache ReWrite rules with directories带有目录的 Apache 重写规则
【发布时间】:2014-04-25 15:30:31
【问题描述】:

我有一个使用以下重写规则的 .htaccess 文件。

RewriteRule ^([a-zA-Z0-9_]+)/$ index.php?action=$1

此规则有效并将http://url.com/doSomething 重写为http://url.com/index.php?action=doSomething

在同一个文件中,我对子目录有重写规则,例如:

RewriteRule ^news/([a-zA-Z0-9_]+)/$ news/index.php?action=$1

在我的本地 Xampp 安装中,当我转到 http://url.com/news/(这是一个子目录)时,它会在子目录中加载 index.php 文件。当我将它上传到我的托管网络服务器时,原始的重写规则优先于不传递到子目录。

我是否缺少允许设计规则的原始方式的选项?

如果上面的任何内容没有意义,请告诉我!

【问题讨论】:

    标签: php apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    只用一条规则创建.htaccess,并放入/以及您要重写的子目录。

    .htaccess

    RewriteEngine On
    RewriteRule ^([a-zA-Z0-9_]+)/$ index.php?action=$1
    

    所以,

    .htaccess 放置在/.htaccess

    .htaccess 放置在/news/.htaccess

    【讨论】:

    • 不幸的是已经这样了,不过还是谢谢你的回复!
    • 尝试只编写一条规则 RewriteRule ^([a-zA-Z0-9_]+)/$ index.php?action=$1 并创建单独的 .htaccess 。将一个放在 / 中,另一个放在“新闻”目录中。然后检查,发生了什么。
    • 您是否在您的 vhost/apache 配置中允许了 htaccess 覆盖? AllowOverride All
    • 您好,对不起,我昨天下午都在开会。我会尽快通知你!
    猜你喜欢
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 2015-04-07
    • 1970-01-01
    相关资源
    最近更新 更多