Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
764 views
in Technique[技术] by (71.8m points)

regex - Removing GET parameter in .htaccess

I'm not able to remove one GET parameter wrongly added by one 404 SEF module.

I want to remove "task=view" only if it appears alone and not with another parameter.

So

www.mysite.com/1.html?task=view should be redirected to www.mysite.com/1.html.

While www.mysite.com?task=view&view=article should remain unchanged.

No matter which RewriteRule I use, this paramater does not go. Looks like it is being generated from any environment variable when index.php is run.

For example this does not work:

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

Here is my .htaccess file:

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

What is the way to handle this?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Use this rule:

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

? at the end of $1 will strip-off any existing query string.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...