.htaccess 从子目录重写到根目录
Posted
技术标签:
【中文标题】.htaccess 从子目录重写到根目录【英文标题】:.htaccess rewrite from subdirectory to root 【发布时间】: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解决。
有人能分享一些知识吗?谢谢。
【问题讨论】:
【参考方案1】:这样的事情怎么样?
RewriteRule ^dev/(.*)$ $1
这需要位于根文件夹中,或应用于主要 Apache 配置(不在 .htaccess 中)。
关于 .htaccess 重定向的常规规则适用 - 包括 RewriteEngine on
、Options FollowSymLinks
和 AllowOverride 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。以上是关于.htaccess 从子目录重写到根目录的主要内容,如果未能解决你的问题,请参考以下文章