Htaccess redirection for positional parameter to base url

.htaccessapache-2.4

If URL contains a special parameter (URL contains Email in the parameter) redirect to the base URL of the page without any parameters.

For example:

http://example.com/accounts/daily/ybk/?Email=redacted@example.com

to

http://example.com/accounts/daily/ybk/

Best Answer

In order to match the query string, you'll need to use a RewriteCond (mod_rewrite) directive and match against the QUERY_STRING server variable. For example, in your root .htaccess file try the following:

RewriteEngine On
RewriteCond %{QUERY_STRING} Email=
RewriteRule (.*) /$1? [R=301,L]

For all URLs that contain Email= anywhere in the query string, 301 redirect to the same URL less the query string.

The ? on the end of the RewriteRule substitution removes the query string from the redirected URL. Alternatively, you can use the QSD flag on Apache 2.4+.

If you've previously tested with erroneous 301s then make sure you clear your browser cache.

UPDATE: For the specific URL stated (including Email= at the start of the query string):

RewriteEngine On
RewriteCond %{QUERY_STRING} ^Email=
RewriteRule ^(accounts/daily/ybk/)$ /$1? [R=301,L]