2

I can't seem to get the regex in my htaccess redirect working:

RewriteRule [\./:_a-zA-Z0-9]*\/(web-browse(r|rs)-benchmarks)[a-zA-Z0-9-/\.:?=]*(|html) /web-browser-benchmarks-firefox-chrome/ [R=301,L]

Even .+(web-browser-benchmarks-firefox-chrome).+ won't work

I'm getting this error in chrome:

The www.domain.org page isn’t working

www.domain.org redirected you too many times. ERR_TOO_MANY_REDIRECTS

5

What seems to be happening, is your rule is being matched and then apache is sending a 301 redirect response telling the browser to generate a new request for

/web-browser-benchmarks-firefox-chrome/

Chrome is generating this request - as instructed, but when your webserver see's this new request - your rule is matching that request too - again telling chrome to generate another request for /web-browser-benchmarks-firefox-chrome/ resulting in an infinite loop.
You can check with:

$ curl -I www.domain.org/web-browser-benchmarks-firefox-chrome/ 

You will probably see something like:

HTTP/1.1 301 
Server: apache
Location:  www.domain.org/web-browser-benchmarks-firefox-chrome/
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is telling chrome/curl/etc to re-request the page it just requested
Date: Thu, 18 Feb 2016 08:56:02 GMT
[...]

You can try break the loop by with a conditional check - so assuming that

www.domain.org/web-browser-benchmarks-firefox-chrome/

is the actual URL you want to serve, and your current rule uses [R=301,L] so Im assuming a 301 external redirect is what you want.

# this RewriteCond tells apache if this URL is requested, thats the URL we want
# so serve it instead of rewriting it.
RewriteCond "%{REQUEST_URI}" !^/web-browser-benchmarks-firefox-chrome/
RewriteRule [\./:_a-zA-Z0-9]*\/(web-browse(r|rs)-benchmarks)[a-zA-Z0-9-/\.:?=]*(|html) /web-browser-benchmarks-firefox-chrome/ [R=301,L]
  • Really well detailed answer here, looks like you even ran the checks too - nice one. – dan Feb 18 '16 at 9:07
  • Can I have more than 1 condition? Like if /web-browser-benchmarks-firefox-chrome/ or /web-browsers-benchmarks-firefox-chrome/ or /web-browser-benchmarks-firefox-chrome/index.html or 0/10/205/web-browser-benchmarks-firefox-chrome/ etc. is requestend THEN redirect any of these to to /web-browser-benchmarks-firefox-chrome/ – Grumpy ol' Bear Feb 18 '16 at 13:51
  • Currently my htaccess has got like 160+ lines of redirects. That's a mite much in my opinion. – Grumpy ol' Bear Feb 18 '16 at 15:02

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.