这对于SEO来说并不理想--但我别无选择:
我试图重定向50个网址,一个为我们每个美国,像这样,从:
http://www.example.com/411/states/Alabama.html
到
https://example.com/wp/myfolder?search_field=state&value=AL
除了转发到不同的URL之外,我还需要完成三件事:
1.添加查询字符串
1.强制使用https
,而不管原始URL中是否包含https
或http
1.访问者是否进入“www”并不重要。
有很多在线例子显示了相反的结果(带查询的URL〉不带查询的URL)--但我找不到一个这样的例子。
我试过很多种组合,最近的是:
RewriteCond %{HTTP_HOST} ^\.mydomain\.com$
RewriteRule ^411/states/Alabama\.html$ https://example.com/wp/myfolder\?search_field=state&value=AL [L,R=301]
2条答案
按热度按时间vtwuwzda1#
如果你也有同样的问题,以下是对我有效的方法:
0yycz8jy2#
这基本上是正确的,你只需要删除
RewriteCond
指令(它永远不会匹配,但似乎无论如何也不需要)。* substitution * 字符串中的文字?
不需要反斜杠转义(但这也不是问题)。从没有查询字符串的URL(或您不关心查询字符串的URL)重定向到具有查询字符串的URL时,不需要特殊处理。只需按所写的那样声明目标URL。
然而,对于重定向所有50个状态的这个特定问题...您可以改为仅使用单个规则并使用50个条件(
RewriteCond
指令),每个条件用于一个状态,以 * 查找 *"状态代码."这将有助于避免重复并且将更有效,因为只有一个规则要处理,而不是50个.(我假设URL的
411
部分只是一个任意的数字代码,每个URL都不同,成功匹配不需要它。)例如:
$1
反向引用包含从URL路径捕获的"状态名称"。* CondPattern * 中的(..)
从 * TestString * 捕获相应的2个字符"状态代码"。%1
反向引用包含匹配的"state code"。具体来说,它包含最后一个匹配的 * CondPattern * 中的第一个捕获的组。所有的 * conditions * 都是OR
'd;只有一个可以匹配。请注意,最后一个 * condition *(
RewriteCond
指令)没有OR
标志。(This不会专门检查空查询字符串,因为这似乎没有必要。)