【问题标题】:Redirect from old domain to new domain with dynamic query string使用动态查询字符串从旧域重定向到新域
【发布时间】:2017-05-15 20:26:15
【问题描述】:

我想使用动态查询字符串将旧域 url 重定向到新域

我的 htaccess

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^en.olddomain.com$ [OR]
 RewriteCond %{HTTP_HOST} ^www.en.olddomain.com$ [OR]
 RewriteCond %{HTTP_HOST} ^en.olddomain.com/$1$
 RewriteRule (.*)$ http://www.newdomain.com/$1 [R=301,L]
</IfModule>

它适用于将所有带有查询字符串的网址重定向到新网址

但我也想改变查询字符串的模式,比如

我的旧网址如

http://en.olddomain.com/product?g=any_value

我想将其中一些重定向到

http://www.newdomain.com/en/product/any_value/

或者他们中的一些人

http://www.newdomain.com/en/product/

我在 htaccess 中添加了这些行以使用动态查询字符串进行重定向

 RewriteCond %{QUERY_STRING} ^g=(.*)
 RewriteRule ^http://www.newdomain.com/en/product/$1 [R=301,L,NC]

但它不起作用

【问题讨论】:

  • 两个域是否由同一个网络服务器进程从同一台机器上的同一个文件夹提供服务? mod_rewrite 是否启用?在此之前或之后您的.htaccess 文件中是否还有其他规则?上面的文件夹中有.htaccess 吗?这是在网站文件夹的根目录中吗?
  • @KraangPrime 我没有太多关于服务器的信息,它是客户端的域,所以我再次将旧域创建到服务器并添加了 htaccess 现在你能告诉我如何将查询字符串传递给重定向? en.olddomain.com/product?g=any_value 重定向到newdomain.com/en/product/ebony/any_value
  • @KraangPrime 我已经编辑了我的问题,你能帮我解决这个问题吗?

标签: .htaccess redirect mod-rewrite dns


【解决方案1】:

当您使用 http 主机标头与 url 路径匹配时,您的最后一个重写条件总是返回 false。要重定向旧域 url 并操作查询字符串,您可以使用以下规则

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$
RewriteCond %{QUERY_STRING} ^g=([^&]+)$
RewriteRule ^ http://newdomain.com/en/product/%1 [L,R]
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain.com$
RewriteRule (.*) http://newdomain.com/$1 [L,R]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 2014-01-08
    • 1970-01-01
    • 2020-06-15
    相关资源
    最近更新 更多