【问题标题】:301 Redirect placing original URL in querystring to new page301 将查询字符串中的原始 URL 重定向到新页面
【发布时间】:2014-05-30 01:18:38
【问题描述】:

我完全感到困惑,可以使用帮助编写特定重定向模式的规则。

在原始站点中,URL 可能类似于:

https://subdomain.originalsite.com/folder1/folder2/folder3/file.tt?state=CA&lvl=state

https://subdomain.originalsite.com/folder1/folder2/?command=state_search&state=CA

或任意数量的类似请求

当这个重定向时,我需要它登陆 http://newsite.com/newfile.php 而不管原始 URL,但我需要新页面“馈送”原始 URL,以便我们可以根据原始 URL 进行一些处理

有没有办法将查询字符串数据中的原始 URL 传递给新 URL?

这两个例子的最终结果是:

http://newsite.com/newfile.php?path=folder1/folder2/folder3/file.tt&q=state|CA||lvl=state

http://newsite.com/newfile.php?path=folder1/folder2/&q=command|state_search||state|CA

所以原来的文件夹路径变成了 path=,而原来的查询字符串(如果有的话)的开始变成了 q=

原始查询字符串键/值对用管道替换=|和符号变成双管 ||

我知道这很丑。

对编写此规则的任何帮助深表感谢。

【问题讨论】:

  • 将新 URL 设为 http://newsite.com/newfile.php?path=folder1/folder2/&q=<encoded original query string> 会更好(也更干净)
  • 那很好,但我仍然需要了解规则才能做到这一点
  • 当然这样的事情应该是可能的......但是你有没有尝试过任何东西......?
  • 如果我明白我就不会问了。我发现重写规则充其量是令人烦恼的,并且花了好几个小时阅读以尝试了解如何处理这个问题。

标签: regex apache .htaccess mod-rewrite redirect


【解决方案1】:

将此代码放入subdomain.originalsite.comDOCUMENT_ROOT/.htaccess 文件中:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^subdomain\.originalsite\.com$ [NC]
RewriteRule ^ http://newsite.com?path=%{REQUEST_URI}&q=%{QUERY_STRING} [L,R]

【讨论】:

    猜你喜欢
    • 2014-06-13
    • 2013-08-06
    • 2016-02-11
    • 2016-04-25
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    相关资源
    最近更新 更多