删除.htaccess中的GET参数

时间:2014-02-03 09:09:41

标签: regex apache .htaccess mod-rewrite joomla1.5

我无法移除一个404 SEF模块错误添加的一个GET参数。

我想删除“task = view”,只要它单独出现而不是另一个参数。

所以

应将

www.mysite.com/1.html?task=view 重定向到 www.mysite.com/1.html

www.mysite.com?task=view&view=article 应保持不变。

无论我使用哪种RewriteRule,这个参数都不会。看起来它是在运行index.php时从任何环境变量生成的。

例如,这不起作用:

RewriteCond %{QUERY_STRING}  ^task=view$ [NC]
RewriteRule (.*)task=view.*  $1 [R=301,L]

这是我的.htaccess文件:

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|.php|.html|.htm|.feed|.pdf|.raw|/[^.]*)$  [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

Options  -Indexes

处理此问题的方法是什么?

1 个答案:

答案 0 :(得分:1)

使用此规则:

RewriteCond %{QUERY_STRING}  ^task=view$ [NC]
RewriteRule ^(.*)$ $1? [R=301,L]
?末尾的

$1将删除任何现有的查询字符串。