Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache重写规则在问号上失败_Apache_.htaccess_Rewrite - Fatal编程技术网

Apache重写规则在问号上失败

Apache重写规则在问号上失败,apache,.htaccess,rewrite,Apache,.htaccess,Rewrite,我们在创建URL时有一个输入错误,所以 /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] Rewr

我们在创建URL时有一个输入错误,所以

/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]
但这并不能解决问题。也有类似的问题,但它们处理的是真正的查询字符串

更新

我使用测试了PanamaJacks解决方案。似乎任何以wasserh开头的url都会重定向到同一个产品。所以我尝试了这个

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之前,RewriteRule会将任何内容发送到index.php,否则即使重写条件正确,它也不会工作。

实际上,这应该可以工作。试试这条规则,看看它是否适合你

RewriteEngine On
RewriteCond %{QUERY_STRING} ^.+$
RewriteRule ^wasserh(.*)$ https://www.kull-design.com/wasserhaehne/wasserhahn-1-2-zoll-kurz-dg11040m+1277? [R=301,L]
编辑:

然后只需尝试匹配该URL唯一的部分

RewriteCond %{QUERY_STRING} ^hne(.+)1281$
RewriteRule ^wasserh(.*)$ https://www.kull-design.com/wasserhaehne/wasserhahn-1-2-zoll-kurz-dg11040m+1277? [R=301,L]

查看我的更新,看看这是否有帮助。还有,为什么你不能更正URL呢?