How to match only part of URL and redirect URL with parameters in .htaccess?

24,035

If the query string is irrelevant then it can simply be ignored. (You can't match the query string anyway with the RewriteRule directive.)

Try the following in your root .htaccess file to redirect the request:

RewriteEngine On
RewriteRule ^index.php/path/some-path/some-subpath$ /category/? [L,R=301]

In per-directory .htaccess files, the URL-path matched by the RewriteRule pattern has the directory-prefix removed. In other words, it does not start with a slash, ^index.php.... instead of ^/index.php.....

The ? on the end of the RewriteRule substitution is required in order to remove the query string (if any) from the request. Otherwise parameter=1 will be passed through and appended to the target URL.

This will match any query string, including an empty one.

Share:
24,035

Related videos on Youtube

Alan Kis
Author by

Alan Kis

Updated on September 18, 2022

Comments

  • Alan Kis
    Alan Kis over 1 year

    I have a number of links with similar structure:

    example.com/index.php/path/some-path/some-subpath?parameter=1
    

    Which I want to redirect just to example.com/category/

    But I want to match only the URL-path, ie. /index.php/path/some-path/some-subpath, because the query parameter is irrelevant.

    I have tried the following rule:

    RewriteRule ^/index.php/path/some-path/some-subpath?parameter=\dd\? /category/ [L,R=301]
    
    • Admin
      Admin about 8 years
      You state that the "query parameter is irrelevant", yet you are trying to check for it in your code example - why? Must the parameter= part be present, but the value does not matter? Or can the query string be ignored altogether?
    • Admin
      Admin about 8 years
      @w3dk complete part '?parameter=value' can be ignoner, but URL should be rewritten. If I use redirect 301 only, I don't get URL rewritten to domain.com/category
  • Alan Kis
    Alan Kis about 8 years
    @wkd, what if I want to rewrite this URL to root, should I use only '/'?
  • MrWhite
    MrWhite about 8 years
    Yes, just use /?. You'll need to clear your browser cache if you have previously tested the rule above. 301 redirects are cached by the browser. For this reason it is often a good idea to test with 302 (temporary) redirects.