如何将 301 这个 link (https://www.example.com/?lang=en) 重定向到这个 link (https://www.example2.com/en/)?
How to redirect 301 this link (https://www.example.com/?lang=en) into this link (https://www.example2.com/en/)?
我正在尝试从我的 .htaccess 文件中的此链接执行重定向 301。
旧url:https://www.example.com/?lang=en
新 url: https://www.example2.com/en/
我会尝试使用这条指令:
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^(.*)$ /en/ [R=301,L]
喜欢这个问题的答案 (301 redirect from URL with query string to new domain with different query string), but my result is this: https://www.example2.com/en/?lang=en.
如何删除查询字符串“?lang=en”并获得新的 url?
现在它可以与添加标志 QSD 一起使用,但现在我遇到了这个问题:
我也需要重定向这个链接:
旧 url 2: https://www.example.com/?lang=de
新 url 2: https://www.example2.com/de/
还有这个链接:
旧 url 3: https://www.example.com/?lang=ru
新 url 3: https://www.example2.com/ru/
如果我使用上面的说明更改查询字符串,则重定向不适用于所有语言。
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^(.*)$ /en/ [R=301,L,QSD]
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=de$
RewriteRule ^(.*)$ /de/ [R=301,L,QSD]
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=ru$
RewriteRule ^(.*)$ /ru/ [R=301,L,QSD]
我该如何解决这个新问题?
编辑 2:
@QuickBecko 的解决方案
有两种解决方案,具体取决于 Apache 版本:
第一个解
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^(.*)$ /en/ [R=301,L,QSD]
RewriteCond %{QUERY_STRING} ^lang=de$
RewriteRule ^(.*)$ /de/ [R=301,L,QSD]
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=ru$
RewriteRule ^(.*)$ /ru/ [R=301,L,QSD]
第二种解法
RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^(.*)$ /en/? [R=301,L]
RewriteCond %{QUERY_STRING} ^lang=de$
RewriteRule ^(.*)$ /de/? [R=301,L]
RewriteCond %{QUERY_STRING} ^lang=ru$
RewriteRule ^(.*)$ /ru/? [R=301,L]
这个就可以了:
RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^$ https://www.example2.com/en/? [R=301,L]
基本上,如果您在末尾添加 ?
,它将从 link 中删除查询。
我正在尝试从我的 .htaccess 文件中的此链接执行重定向 301。
旧url:https://www.example.com/?lang=en
新 url: https://www.example2.com/en/
我会尝试使用这条指令:
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^(.*)$ /en/ [R=301,L]
喜欢这个问题的答案 (301 redirect from URL with query string to new domain with different query string), but my result is this: https://www.example2.com/en/?lang=en.
如何删除查询字符串“?lang=en”并获得新的 url?
现在它可以与添加标志 QSD 一起使用,但现在我遇到了这个问题:
我也需要重定向这个链接:
旧 url 2: https://www.example.com/?lang=de
新 url 2: https://www.example2.com/de/
还有这个链接:
旧 url 3: https://www.example.com/?lang=ru
新 url 3: https://www.example2.com/ru/
如果我使用上面的说明更改查询字符串,则重定向不适用于所有语言。
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^(.*)$ /en/ [R=301,L,QSD]
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=de$
RewriteRule ^(.*)$ /de/ [R=301,L,QSD]
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=ru$
RewriteRule ^(.*)$ /ru/ [R=301,L,QSD]
我该如何解决这个新问题?
编辑 2:
@QuickBecko 的解决方案
有两种解决方案,具体取决于 Apache 版本:
第一个解
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^(.*)$ /en/ [R=301,L,QSD]
RewriteCond %{QUERY_STRING} ^lang=de$
RewriteRule ^(.*)$ /de/ [R=301,L,QSD]
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^lang=ru$
RewriteRule ^(.*)$ /ru/ [R=301,L,QSD]
第二种解法
RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^(.*)$ /en/? [R=301,L]
RewriteCond %{QUERY_STRING} ^lang=de$
RewriteRule ^(.*)$ /de/? [R=301,L]
RewriteCond %{QUERY_STRING} ^lang=ru$
RewriteRule ^(.*)$ /ru/? [R=301,L]
这个就可以了:
RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^$ https://www.example2.com/en/? [R=301,L]
基本上,如果您在末尾添加 ?
,它将从 link 中删除查询。