我想用 .htaccess 删除 URL 末尾带问号的字符串
I want to remove a string with a question mark at the end of my URL with .htaccess
我要删除字符串
?mobile=1
来自具有 .htaccess
的不同 URL。所以:
https://www.example.com/?mobile=1
应该变成 https://www.example.com/
和
https://www.example.com/something/?mobile=1
应该变成 https://www.example.com/something/
我尝试了以下方法
RewriteEngine On
RewriteRule ^(.+)?mobile=1 / [R=301,L,NC]
但这似乎不起作用。有什么想法吗?
RewriteRule ^(.+)?mobile=1 / [R=301,L,NC]
RewriteRule
模式 仅匹配 URL 路径,这明显排除了查询字符串。所以上面的 永远不会 匹配。 (除非 URL 路径中有 % 编码的 ?
,例如 %3F
)
要匹配查询字符串,您需要一个额外的 条件(RewriteCond
指令)并匹配 QUERY_STRING
服务器变量。
正则表达式 .+
(1 个或多个)将不匹配文档根目录(即您的第一个示例:https://www.example.com/?mobile=1
)。在这种情况下,您需要允许 empty URL 路径。例如。 .*
(0 个或更多)。
例如,在根 .htaccess
文件的 top 附近尝试以下操作:
RewriteCond %{QUERY_STRING} =mobile=1
RewriteRule (.*) / [QSD,R=301,L]
这与查询字符串 mobile=1
完全匹配,区分大小写(如您的示例所示)。不能存在其他 URL 参数。 CondPattern 上的 =
前缀使其成为完全匹配字符串比较,而不是通常的正则表达式。
并重定向到相同的 URL-路径,由包含 URL- 的 substitution 字符串中的 </code> 反向引用表示来自 <code>RewriteRule
模式 .
中捕获组的路径
QSD
(查询字符串丢弃)标志从重定向响应中删除查询字符串。
首先使用 302(临时)重定向进行测试,并且仅更改为 301(永久)- 如果这是意图 - 一旦您确认其按预期工作。 301 由浏览器持久缓存,因此会使测试出现问题。
我要删除字符串
?mobile=1
来自具有 .htaccess
的不同 URL。所以:
https://www.example.com/?mobile=1
应该变成 https://www.example.com/
和
https://www.example.com/something/?mobile=1
应该变成 https://www.example.com/something/
我尝试了以下方法
RewriteEngine On
RewriteRule ^(.+)?mobile=1 / [R=301,L,NC]
但这似乎不起作用。有什么想法吗?
RewriteRule ^(.+)?mobile=1 / [R=301,L,NC]
RewriteRule
模式 仅匹配 URL 路径,这明显排除了查询字符串。所以上面的 永远不会 匹配。 (除非 URL 路径中有 % 编码的 ?
,例如 %3F
)
要匹配查询字符串,您需要一个额外的 条件(RewriteCond
指令)并匹配 QUERY_STRING
服务器变量。
正则表达式 .+
(1 个或多个)将不匹配文档根目录(即您的第一个示例:https://www.example.com/?mobile=1
)。在这种情况下,您需要允许 empty URL 路径。例如。 .*
(0 个或更多)。
例如,在根 .htaccess
文件的 top 附近尝试以下操作:
RewriteCond %{QUERY_STRING} =mobile=1
RewriteRule (.*) / [QSD,R=301,L]
这与查询字符串 mobile=1
完全匹配,区分大小写(如您的示例所示)。不能存在其他 URL 参数。 CondPattern 上的 =
前缀使其成为完全匹配字符串比较,而不是通常的正则表达式。
并重定向到相同的 URL-路径,由包含 URL- 的 substitution 字符串中的 </code> 反向引用表示来自 <code>RewriteRule
模式 .
QSD
(查询字符串丢弃)标志从重定向响应中删除查询字符串。
首先使用 302(临时)重定向进行测试,并且仅更改为 301(永久)- 如果这是意图 - 一旦您确认其按预期工作。 301 由浏览器持久缓存,因此会使测试出现问题。