【问题标题】:htaccess in subfolder cant rewrite to file子文件夹中的 htaccess 无法重写到文件
【发布时间】:2011-12-19 14:55:04
【问题描述】:

在根目录中有一个 htaccess 文件,它将所有登陆它的东西引导到一个 diff 域

RewriteEngine on
RewriteRule (.*) http://www.domain.com/

http://www.domain.com/123 = http://www.domain.com/

我在根目录中有一个名为“admin”的文件夹,其中包含另一个 htaccess 文档,我希望该 htaccess 文档将其根目录指向“admin.php”

RewriteEngine on
RewriteRule ^$ /admin.php

http://www.domain.com/admin/ = http://www.domain.com/admin/admin.php

但无论我怎么做,我要么得到 500 错误,要么主根文档中的重写规则覆盖它。

希望这是有道理的,谢谢。

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    解决此问题的最简单方法(有几种)可能是使用以下条件从根目录中的 RewriteRule 中排除 admin 目录:

    RewriteEngine on
    RewriteCond $1 !^admin/.*
    RewriteCond $1 !^admin\.php
    RewriteRule (.*) http://www.domain.com/
    

    【讨论】:

    • 嗯,成功了一半。现在加载管理目录。但是我在目录“Options 指令禁止的目录索引:”中收到 403 错误,如果在 /admin/ 目录的 htaccess 文档中设置了任何重写规则,那么它只会重定向到 domian.com
    • 我的错,RewriteCond 应该排除管理员以下的任何内容。我相应地更新了答案(没有测试它,但它应该可以工作)。
    • 是的,它仍然有效,但只有一半。我在 /admin/ 内的 htaccess 中有这些写入规则:'DirectoryIndex admin.php RewriteEngine On RewriteRule ^meow$ /admin.php?action=meow' 如果我转到 /admin/meow/ 它会重定向到 domain.com。跨度>
    • 您的 admin.php 在哪里?我假设它在 /admin/admin.php 中,但是如果它在根目录中,对 /admin.php 的请求将被根目录中的规则重定向。您可以通过这样的附加条件来防止这种情况发生:RewriteCond $1 !^admin\.php。我已经相应地更新了答案。
    • 它在 /admin/ 但我现在已经放弃了。同样感谢您的帮助。
    猜你喜欢
    • 2012-12-12
    • 2015-09-27
    • 2016-12-21
    • 2017-05-25
    • 2018-04-06
    • 2021-11-20
    • 2014-01-13
    • 2019-03-03
    • 2012-11-22
    相关资源
    最近更新 更多