.htaccess 仅将特定的 UTF-8 子域 U. R. L.s 重定向到其子域

.htaccess Redirect Only Specific UTF-8 SubDomain U. R. L.s to Its SubDomain

我有:

https://Restoran.Grupacija.com/?ćumur

需要重定向到:

https://Restoran.Grupacija.com/

该指令位于根文件夹的 .htaccess 文件中,但它不起作用:

Redirect 301 "^/%3Fćumur" https://Restoran.Grupacija.com

这个我也试过了,也没用:

Redirect 301 "^/%3F%C4%87umur" https://Restoran.Grupacija.com

我的 .htaccess 文件已经是UTF-8。

mod_alias Redirect 指令只匹配 URL-path ,特别是排除了查询字符串。 (但是,Redirect 指令也不使用正则表达式匹配,而是使用简单的 prefix-matching。)

要匹配您需要使用 mod_rewrite 的查询字符串,并匹配 RewriteCond 指令中的 QUERY_STRING 服务器变量。

请注意,browser/user-agent 将 URL 将 HTTP 请求中的 ć 编码为 %C4%87,并且 QUERY_STRING 服务器变量未解码,所以我们需要匹配编码请求。严格来说,%C4%c4 都是有效的编码。

我假设您不需要显式检查请求的主机名,除非此查询字符串在您的服务器收到的另一个主机名上有效?

例如,要按要求执行重定向,以下内容需要在任何现有重写之前靠近 .htaccess 文件的顶部。

RewriteEngine On

RewriteCond %{QUERY_STRING} ^%[cC]4%87umur$
RewriteRule ^$ / [QSD,R=301,L]

QSD(查询字符串丢弃)标志从重定向响应中删除查询字符串。

首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。

(如果 .htaccess 文件中已经出现,则无需重复 RewriteEngine 指令。)