我们在创建网址时遇到了拼写错误,所以
/wasserh?hne/wasserhahn-1-2-zoll-dg11040-e+1281
应重定向到
/wasserhaehne/wasserhahn-1-2-zoll-dg11040-e+1281
.htaccess以
开头RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.kull-design.com$1 [R,L=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php [L]
RewriteRule ^eng/deu index.php
通常像这样工作
Redirect 301 /blog/tag/wasserhaehne-aus-messing/ https://www.kull-design.com/wasserhahn-classic/wasserhahn-13cm-40-593+631
但是失败了
RewriteRule /wasserh?hne/wasserhahn-1-2-zoll-dg11040-e+1281 https://www.kull-design.com/wasserhaehne/wasserhahn-1-2-zoll-dg11040-e+1281
我试图逃避?,但这没有用。我怀疑之后的部分?被视为查询字符串,所以我尝试了
RewriteCond %{QUERY_STRING} hne/wasserhahn-1-2-zoll-kurz-dg11040m+1277
RewriteRule ^/wasserh https://www.kull-design.com/wasserhaehne/wasserhahn-1-2-zoll-kurz-dg11040m+1277 [R=301,L]
但这并没有成功。有类似的问题,但它们处理真实的查询字符串。
更新:
我使用htaccess.madewithlove.be测试了PanamaJacks解决方案。似乎任何以wasserh开头的网址都被重定向到同一产品。所以我尝试了这个
https://www.kull-design.com/wasserh?hne/wasserhahn-gebogen-dg110h76870+1295
RewriteEngine On
RewriteCond %{QUERY_STRING} ^hne/wasserhahn-gebogen-dg11010+1295
RewriteRule ^wasserh(.*)$ https://www.kull-design.com/wasserhaehne/wasserhahn-gebogen-dg11010+1295 [R=301,L]
但与条件不符。再次逃避 - 或者+没有效果。
更新: 请注意,您必须将这些重定向放在RewriteRule之前,它会将任何内容发送到index.php,或者尽管重写条件正确,它仍无法正常工作。
答案 0 :(得分:1)
实际上这应该有点合适。试试这条规则,看看它是否适合你。
RewriteEngine On
RewriteCond %{QUERY_STRING} ^.+$
RewriteRule ^wasserh(.*)$ https://www.kull-design.com/wasserhaehne/wasserhahn-1-2-zoll-kurz-dg11040m+1277? [R=301,L]
编辑:
然后尝试匹配该网址唯一的部分内容。
RewriteCond %{QUERY_STRING} ^hne(.+)1281$
RewriteRule ^wasserh(.*)$ https://www.kull-design.com/wasserhaehne/wasserhahn-1-2-zoll-kurz-dg11040m+1277? [R=301,L]