1

I am trying to edit .htaccess to do 301 redirect from old domain to new. I was wondering if there's a way to do a 301 redirect that matches a certain keywords. So instead of writing 301 for each line, is there a way to redirect if apple or oranges or bananas show up after /blog/ with a couple lines of code and have them all 301 perm redirect to /blog/fruits/?

Example:

/blog/apple/
/blog/oranges/
/blog/bananas/

301 redirect to

/blog/fruits/
  • Is the new domain on the same webspace as the old domain? Do you have existing redirects in .htaccess - are you using mod_alias (Redirect) or mod_rewrite (RewriteRule). – MrWhite May 17 '16 at 17:02
2

You can do this with mod_rewrite, for example:

RewriteEngine On
RewriteRule ^blog/(apple|oranges|bananas)/ /blog/fruit/ [R=301,L]

This literally redirects just the 3 URLs listed in the question. If you wanted to redirect from /blog/apple/<something> to /blog/fruit/<something> then you can modify the above RewriteRule to:

RewriteRule ^blog/(apple|oranges|bananas)/(.*) /blog/fruit/$2 [R=301,L]

Example: /blog/the-oranges-is-good-fruit/ would match or /blog/my-apples-and-oranges/ would match and triggers the 301 redirect

To match URLs where these words are contained anywhere inside that path segment then the above RewriteRule can be changed to:

RewriteRule ^blog/[^/]*(apple|oranges|bananas)[^/]*/ /blog/fruit/ [R=301,L]

The [^/]* matches any number of characters that are not slashes (path segment delimiter).

  • Thank you @w3dk, will it covers if there's wild cards characters in front or end of these sets of characters? could i just add the * wild card like this? ^blog/*(apple|oranges|bananas)*/ ? – KJYe.Name May 17 '16 at 17:07
  • What are you trying to match specifically? You can't simply add "wild cards characters in front or end" - this is a regular expression (regex), not a glob pattern. (In a regex, the * matches the previous element 0 or more times.) – MrWhite May 17 '16 at 18:19
  • Basically, i want to 301 redirect /blog/<set of words>/ so if it contains substrings of apple, oranges, or bananas and it'll redirect to url of my choice. Example: /blog/the-oranges-is-good-fruit/ would match or /blog/my-apples-and-oranges/ would match and triggers the 301 redirect. Does this make sense? – KJYe.Name May 17 '16 at 18:25
  • I've updated my answer. – MrWhite May 17 '16 at 18:38
0

Even if there were a way to do this, you might find that you're actually doing the same thing in 2 different ways.

Is there a difference between writing several individual 301 redirects and writing some script (I'm not even sure whether you'd be able to accomplish this with .htaccess) that uses some list/array of keywords that you needed to input by hand?

If the idea of writing that many redirects is daunting. I would suggest using a spreadsheet and the CONCATENATE formula to make your life very easy:

formula

result

=CONCATENATE($A$23,A26," ",B26)

  • I am trying to reduce the amount of written lines in .htaccess especially if i have more than 1000 url redirects that need to be done – KJYe.Name May 17 '16 at 16:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.