繁体   English   中英

.htaccess使用GET参数和URL条件重定向

[英].htaccess redirect with GET parameters and URL condition

我尝试根据2个条件重定向到另一个域并更改URL结构(不保留URI部分):

  1. 原始网址具有“ lang”参数。

  2. 原始URI以“页面”开头。

是Apache 2.2

当原始URL中仅具有lang paramenter时,此方法有效:

RewriteCond %{QUERY_STRING} lang=en$
RewriteRule ^.*$ https://www.destination.com/en/? [R=301,L]

例如,它将ok重定向为:

http://www.origin.com/?lang=en

至:

http://www.destination.com/en/

但我还需要重定向以下内容:

http://www.origin.com/page/5/?lang=en

至:

http://www.destination.com/en/

我正在尝试类似的操作,但不起作用,我认为RewriteRule模式中存在错误:

RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^/page/.*/?$ https://www.destination.com/en/? [R=301,L]

欢迎!

您可能不想拥有一个? 在RewriteRule的末尾。 但是,如果您愿意,可以这样做。 也许您想拥有一个类似于以下内容的RewriteRule:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{QUERY_STRING} lang=en$
    RewriteRule (.*)(\?lang=en) https://www.destination.com/en/ [R=301,L]

</IfModule>
  • 您可能要使用类似以下的命令来重新启动apache:

     sudo apachectl restart 
  • 每次对.htaccess文件进行更改时,您可能都会清除浏览器缓存

在此处输入图片说明

图形

该图显示了表达式的工作原理,如果您想知道:

在此处输入图片说明

该工具可以帮助您简单地设计自己想要的任何规则。

我假设您要将所有包含ULR的?lang=en重定向到单个URL。 我不确定。 如果不是这种情况,则您可能无法使用我的表达方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM