php dev
php dev

Reputation: 173

redirect 301 not working properly in .htaccess

htaccess 301 redirect. I have this old site which is for example http://test.org/conference I want to redirect it to conference.test.org What happened is the 301 redirect in my .htaccess file is quite buggy.

Here is my 301 redirect htaccess code below:

RewriteCond %{REQUEST_URI} ^/http://test.org/conference(/)?
RewriteRule ^(.*)$ http://conference.test.org/? [R=301,L]

When I test this one it runs and redirects correctly. But when I test it over and over again. It seems not to redirect anymore.

Can someone help me have a htaccess 301 redirect code?

Any help is much appreciated.TIA

Upvotes: 1

Views: 64

Answers (1)

arkascha
arkascha

Reputation: 42915

I assume this is what you are looking for:

RewriteEngine on
RewriteRule ^conference/?$ http://conference.test.org/ [R=301,L,QSA]

Please note that %{REQUEST_URI} only contains the path of the URI, so not the protocol and the hostname. Reason is that the evaluation is performed inside a http host. This is explicitly pointed out in the documentation: http://httpd.apache.org/docs/current/mod/mod_rewrite.html

Depending on your http hosts setup you might also have to add a condition to prevent an endless redirection loop:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^conference\.test\.org$ [NC]
RewriteRule ^conference/?$ http://conference.test.org/ [R=301,L,QSA]

But usually that is not required, since the rule should be defined inside the test.org http host...

Upvotes: 1

Related Questions