如果QUERY_STRING与set不同,则重定向301

时间:2018-02-02 00:07:47

标签: regex apache .htaccess redirect mod-rewrite

我尝试使用.htaccess进行301重定向

我的地址如下:

/index.php?option=calendario&task=view_calendar&month=12&year=2017&Itemid=100
/index.php?option=calendario&task=view_calendar&month=12&year=2017&Itemid=101

我想重定向到

/index.php?option=calendario&task=view_calendar&month=12&year=2017&Itemid=400

始终Itemid400不同 当然,月份和年份可以改变

我写了这个重定向:

RedirectMatch 301 ^/index.php?option=calendario&task=view_calendar&(month=.+)&(year=.+)&(Itemid=.+)$    /index.php?option=calendario&task=view_calendar&month=$1&year=$2&Itemid=490

然而,它不起作用,如果我需要使用mod_rewrite,我不会这样做吗?

1 个答案:

答案 0 :(得分:2)

查询字符串不是与RewriteMatch进行比较的URL字符串的一部分。您可以对RewriteCond

进行%{QUERY_STRING}检查
RewriteCond %{QUERY_STRING} !option=calendario&task=view_calendar&month=([^&]+)&year=([^&]+)&Itemid=400
RewriteRule ^index.php$ /index.php?option=calendario&task=view_calendar&month=%1&year=%2&Itemid=400 [R=301,L]