我尝试根据2种情况重定向到另一个域并更改URL结构(不保留URI部分):
原始URL具有“ lang”参数。
原始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]
答案 0 :(得分:0)
欢迎!
您可能不希望在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
文件进行更改时,您可能会清除浏览器缓存
此图显示了您的表达式如何工作,如果您想知道:
This tool可以帮助您简单地设计自己想要的任何规则。
我假设您要将所有包含?lang=en
的ULR重定向到单个URL。我不确定。如果不是这种情况,则可能无法使用我的表达方式。