1

I want to redirect something like:

domain/start[optional]/xxx

to

domain/something/xxx

I've tried to add to .htaccess:

# Rewrite any start* route to something route
RewriteCond %{REQUEST_URI}
RewriteRule ^start[^/]*/(.*)$ /something/$1 [R=301, L]

but I'm getting an Internal Server Error. Any idea of what I'm doing wrong?

The Apache logs says:

RewriteCond: bad argument line '%{REQUEST_URI}'

Manolo
  • 24,020
  • 20
  • 85
  • 130
  • what does the internal server error say? – TZHX Mar 13 '15 at 14:11
  • your rewriterules seems correct, you probably get the error because you have to allow overrides in htaccess. in that case, see here: http://stackoverflow.com/questions/6995545/htaccess-rewriteengine-not-allowed-here – guido Mar 13 '15 at 14:11
  • @TZHX - Question edited. – Manolo Mar 13 '15 at 14:13

1 Answers1

1

Your rule has few syntax issues. Try this rule:

# Rewrite any start* route to something route
RewriteRule ^start[^/]*/(.*)$ /something/$1 [R=301,L,NC]
anubhava
  • 761,203
  • 64
  • 569
  • 643
  • 1
    Great! You're always solving my regex issues :) – Manolo Mar 13 '15 at 14:16
  • Now, I'm not getting the server error any more, but doesn't redirect. Let me try some stuff before marking as answered. – Manolo Mar 13 '15 at 14:19
  • Is `start` a directory? If not then place this rule just below `RewriteEngine On` line – anubhava Mar 13 '15 at 14:21
  • In my own example, `something` is `startsomething`, so I'm getting infinite redirections. How could I avoid it? I mean, do the redirect just once. – Manolo Mar 13 '15 at 14:58
  • 1
    For that you can tweak regex to: **`RewriteRule ^start(?!something)[^/]*/(.*)$ /something/$1 [R=301,L,NC]`** – anubhava Mar 13 '15 at 15:00