Welcome to WebmasterWorld Guest from

Forum Moderators: Ocean10000 & incrediBILL & phranque

Message Too Old, No Replies

mod rewrite setting up permanent redirect

for a subdomain, is not working as it should =(

11:12 pm on Mar 13, 2007 (gmt 0)

10+ Year Member

My situation is this:

www.domain.com (main website)

sub.domain.com/files/ (hosted files in past)
sub.domain.com/images/ (hosted images in past)

Using htaccess I wish to setup a permanent redirect from:




This is the contents of the .htaccess file I have in my sub.domain.com directory on my host:

Options All -Indexes
Options +FollowSymLinks

RewriteEngine On
RewriteRule ^files/(.*)$ [otherdomain.com...] [R=permanent,L]

When I use this, it throws an Internal Server Error. I'm stumped, can anyone shed some light on the problem?

11:23 pm on Mar 13, 2007 (gmt 0)

WebmasterWorld Senior Member jdmorgan is a WebmasterWorld Top Contributor of All Time 10+ Year Member

What is in your server error log?

You code, though not completely correct, is syntactically correct enough that it shouldn't be throwing a server error for any obvious reason.


12:02 am on Mar 14, 2007 (gmt 0)

10+ Year Member

Nothing in the error log indicated the problem =(

After trying numerous examples, I found this to work:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.sub.domain.com$
RewriteRule ^(.*)$ [otherdomain.com...] [R=301,L]

However, I'd optimally it should only redirect when the request is from


and in the rule i would like it to write the somefile.ext to the end of file.php, such as


I tried setting that up to work but it continues to just redirect everything from the subdomain..

12:21 am on Mar 14, 2007 (gmt 0)

WebmasterWorld Senior Member jdmorgan is a WebmasterWorld Top Contributor of All Time 10+ Year Member

If your code is located in /files/.htaccess, then it won't affect anything but the files in that directory and below. You can eliminate one (and correct the other) RewriteCond, and add the parameter you want as shown:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?sub\.domain\.com
RewriteRule (.*) http://www.otherdomain.com/file.php?request=$1 [R=301,L]

Note the optional "www.", the required escaping of literal periods, the removed end anchor (to prevent problems if a port number is appended to the domain), the removed (redundant) anchoring on the RewriteRule pattern, and the $1 back-reference to the requested page.

If the requested page is blank, i.e. the request is for /files/, then the request= value will also be blank. If that is a problem, it can be addressed by using two rules, but if not, just stick with this one.


[edited by: jdMorgan at 12:22 am (utc) on Mar. 14, 2007]

1:48 am on Mar 14, 2007 (gmt 0)

10+ Year Member

Thanks, that's very helpful. I am quite mediocre with regex or reading most regex documenation, so the explanation with example is more help than anything I've come across yet.