【发布时间】:2010-05-27 23:36:28
【问题描述】:
我必须重定向一个包含问号的 URL,我只是想不出正确的 .htaccess 代码来实现它。
示例: 重定向 301 /home.php?cat=16 http://www.example.com/furniture.html
我认为我需要重写条件,但我不是 htaccess 专家。
【问题讨论】:
我必须重定向一个包含问号的 URL,我只是想不出正确的 .htaccess 代码来实现它。
示例: 重定向 301 /home.php?cat=16 http://www.example.com/furniture.html
我认为我需要重写条件,但我不是 htaccess 专家。
【问题讨论】:
使用Redirect directive from mod_alias,您只能检查URI path 而不能检查查询(适用于所有directives of mod_alias)。如果要检查 URI 查询,您需要使用 mod_rewrite:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^cat=16$
RewriteRule ^home\.php$ http://www.example.com/furniture.html? [L,R=301]
替换中的空查询将阻止将原始查询附加到新 URI。
【讨论】:
匹配的是什么?
Pattern 最初会被匹配 针对 URL 之后的部分 主机名和端口,以及在 请求参数。如果你想匹配 针对主机名、端口或查询 字符串,使用
RewriteCond和%{HTTP_HOST}、%{SERVER_PORT}或%{QUERY_STRING}变量 分别。
【讨论】:
对于更复杂的参数(如 site.com/index.php?blaa=1&id=33)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} blaa=1&id=33
RewriteRule ^(.*)$ http://www.site.com/yourpage.html? [R=301,L]
</IfModule>
【讨论】: