【问题标题】:.htaccess rewrite from subdirectory to root.htaccess 从子目录重写到根目录
【发布时间】:2012-01-26 21:59:43
【问题描述】:

我对 mod_rewrite 规则有一些困难。 我想重写任何请求

www.example.com/dev/*

www.example.com/*

例如当请求的url是www.example.com/dev/index.php,响应应该是www.example.com/dev/index.php,不仅仅是url看起来像是来自根目录,实际上是使用了根目录的index.php

我已经尝试过有效的 mod_alias

RedirectMatch (^/dev/)(.*) http://www.example.com/$2

但是不能用mod_alias应用ip地址条件,所以还是需要用mod_rewrite解决。

有人能分享一些知识吗?谢谢。

【问题讨论】:

    标签: apache http .htaccess url mod-rewrite


    【解决方案1】:

    这样的事情怎么样?

    RewriteRule ^dev/(.*)$ $1
    

    这需要位于根文件夹中,或应用于主要 Apache 配置(不在 .htaccess 中)。

    关于 .htaccess 重定向的常规规则适用 - 包括 RewriteEngine onOptions FollowSymLinksAllowOverride FileInfo 包含在某处。详情请见http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule

    【讨论】:

    • 不,没有运气。我想知道它是否与用于阻止访问某些类型文件的其他规则有关。所以我把这条新规则放在第一行,就在RewriteBase / 的下方,但还是不行。
    • @vicch 尝试添加[L] 标志,即将规则更改为RewriteRule ^dev/(.*)$ $1 [L],这样它就不会处理其他规则
    • @vicch - 您需要简化配置以解决此问题。删除所有其他规则并仅测试此规则,然后重新添加其他规则,直到找到干扰此规则的内容。
    • 好的,问题解决了。是 dev 文件夹中的 .htaccess 阻止它工作。所以我只是禁用它以使重定向工作。谢谢 ziesemer 和 Ulrich。
    • 奇怪的是,浏览器中显示的url是dev/index.php,而使用的文件实际上是根文件夹中的index.php。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    相关资源
    最近更新 更多