Home > front end >  Rewrite URLs to redirect and add leading zero
Rewrite URLs to redirect and add leading zero

Time:01-01

I have a request on the server to this url: in the date part without zero.

http://example.com/url.php?date=2023-1-01

Is there a way to add a zero to the months from 1 to 9 and redirect from htaccess

http://example.com/url.php?date=2023-01-01

CodePudding user response:

You can do something like the following using mod_rewrite near the top of the root .htaccess file.

For example:

RewriteEngine On

RewriteCond %{QUERY_STRING} ^(date=\d{4}-)([1-9]-\d\d)$
RewriteRule ^url\.php$ /$0?%2 [R=302,L]

The RewriteCond directive captures the parts of the query string before and after where the 0 needs to be inserted. These parts are stored in the backreferences %1 and %2 which are later used in the substitution string to reconstruct the query string.

The substitution string (ie. /$0?%2) is made up of the following parts:

  • / - Slash prefix required for the external redirect.
  • $0 is a backreference to the URL-path that is matched by the RewriteRule pattern. ie. url.php in this case.
  • ? - delimits the start of the query string
  • %1 - holds the value of the first capturing group (parenthesised subpattern) in the preceding CondPattern. ie. a string of the form date=NNNN-
  • 0 - literal zero.
  • %2 - holds the value of the second capturing group in the preceding CondPattern. ie. a string of the form N-NN.
  • Related