【问题标题】:Redirect subfolder to another keeping query string将子文件夹重定向到另一个保留查询字符串
【发布时间】:2011-07-16 13:07:58
【问题描述】:

在 Apache 网络服务器上,我想创建一个键入的 URL 文件夹以匹配另一个,并将 URL 字符串的结尾转换为匹配文件夹的查询字符串。

输入的网址可以是:
http://www.website.net/corp/view/folder1/folder2

结果查看的页面将在内部为:
http://www.website.net/corp/files/?dir=folder1/folder2

我在 httpd.conf 中尝试了以下规则: RewriteRule ^/corp/view/(.*) /corp/files/?dir=$1 [L],我得到一个无限循环,URL 是自我重定向的......

感谢您的帮助。

【问题讨论】:

    标签: mod-rewrite query-string


    【解决方案1】:

    使用.+ 代替.*

    RewriteRule ^/corp/view/(.+) /corp/files/?dir=$1 [L]
    

    .* 会导致无限递归,因为它还匹配/corp/files/ 末尾的空字符串。

    【讨论】:

    • 我尝试了您的建议,但它不起作用。 .+.* 有相同的效果,我刚刚发现它发生了什么:在 IE9 中使用 F12 工具,我可以看到 /corp/view/folder1 被重定向到 /corp/view/folder1/index.php/?dir=folder1,到 /corp/view/folder1/index.php/index.php?dir=folder1/index.php,等等。
    • @Velcro:哦,对不起,我以为你正在重写同一个目录。那么,还有其他规则可能与此冲突吗?
    • 我有其他规则,但没有人采用这种模式(我检查过)。顺便说一句,我试图放置一个 [R] 标志,并且重定向是可以的。但是,我想获得一个内部重定向,也就是 URL 重写...
    • @Velcro:但我仍然猜想这是另一个适用的规则。
    • @Gumbo:你是对的。感谢 RewriteLog,我发现这是我的另一条规则将不需要的查询(如无效的 Host HTTP 标头)重定向到特定文件夹。我失去了我的一天和你的时间,对不起......
    猜你喜欢
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    相关资源
    最近更新 更多