为所有 URL 的任何搜索查询重定向查询字符串
Redirecting query string for any search query for all URLs
我想问一下是否可以重定向
example.com/something?query=hell
至
example.com/something/hell
在 htaccess 的帮助下。我想对使用 GET
方法传递的所有查询执行此操作。有人知道吗??
您可以在 htaccess 中使用以下规则执行此操作
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ /something?query= [L]
根据上述规则,您只需在浏览器中输入 example.com/foobar
即可访问位于 example.com/something?query=foobar
的页面。
要将 /something?query=hell
“重定向”到 /something/hell
,您可以使用 mod_rewrite 执行以下操作:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^query=([^&]*)
RewriteRule ^something$ /[=10=]/%1 [QSD,R=302,L]
RewriteRule
模式 仅匹配 URL 路径。您需要一个额外的 condition 匹配 QUERY_STRING
服务器变量才能匹配查询字符串。
[=16=]
反向引用包含来自 URL 路径的“东西”,%1
包含 query
URL 参数的值,例如。 “地狱”,(在前面的 CondPattern 中捕获)。
请注意,query
URL 参数必须出现在查询字符串的开头,如您的示例所示。
丢弃查询字符串需要 QSD
标志。
但是,如果您稍后将 URL 重写回查询字符串(实现“漂亮”URLs),那么您将需要一个额外的 条件 以防止重定向循环(以防止重写的请求被重定向)。例如:
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^query=([^&]*)
RewriteRule ^something$ /[=11=]/%1 [QSD,R=302,L]
我想问一下是否可以重定向
example.com/something?query=hell
至
example.com/something/hell
在 htaccess 的帮助下。我想对使用 GET
方法传递的所有查询执行此操作。有人知道吗??
您可以在 htaccess 中使用以下规则执行此操作
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ /something?query= [L]
根据上述规则,您只需在浏览器中输入 example.com/foobar
即可访问位于 example.com/something?query=foobar
的页面。
要将 /something?query=hell
“重定向”到 /something/hell
,您可以使用 mod_rewrite 执行以下操作:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^query=([^&]*)
RewriteRule ^something$ /[=10=]/%1 [QSD,R=302,L]
RewriteRule
模式 仅匹配 URL 路径。您需要一个额外的 condition 匹配 QUERY_STRING
服务器变量才能匹配查询字符串。
[=16=]
反向引用包含来自 URL 路径的“东西”,%1
包含 query
URL 参数的值,例如。 “地狱”,(在前面的 CondPattern 中捕获)。
请注意,query
URL 参数必须出现在查询字符串的开头,如您的示例所示。
丢弃查询字符串需要 QSD
标志。
但是,如果您稍后将 URL 重写回查询字符串(实现“漂亮”URLs),那么您将需要一个额外的 条件 以防止重定向循环(以防止重写的请求被重定向)。例如:
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^query=([^&]*)
RewriteRule ^something$ /[=11=]/%1 [QSD,R=302,L]