I am running Apache witha redirect rule like this:
RewriteCond %{HTTP_HOST} ^1st-domain\.com
RewriteRule ^(.*)$ http://2nd-domain.com$1 [R=permanent,L]
This successfully redirects http://1st-domain.com to http://2nd-domain.com However, when the REQUEST_URI is empty, I want to redirect to a third domain.
RewriteCond %{HTTP_HOST} ^1st-domain\.com$
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ http://3rd-domain.com$1 [R=permanent,L]
But this does not work and instead redirects to 2nd-domain.com
My rules are ordered like this:
RewriteCond %{HTTP_HOST} ^1st-domain\.com$
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ http://3rd-domain.com$1 [R=permanent,L]
RewriteCond %{HTTP_HOST} ^1st-domain\.com
RewriteRule ^(.*)$ http://2nd-domain.com$1 [R=permanent,L]
Any suggestions? Thank you in advance.
UPDATE
- Empty REQUEST_URI: http:/1st-domain.com
- Non-empty REQUEST_URI: http://1st-domain.com/something
The first rule should direct an empty request_uri to 3rd-domain.com, the second rule should direct the non-empty request_uri to 2nd-domain.com
USEFUL TIDBIT You can turn on mod_rewrite debug with this snippet:
<IfModule mod_rewrite.c>
RewriteLog "/home/domain.com/logs/rewrite.log"
RewriteLogLevel 3
</IfModule>
Very useful debug option I hadn't known.
This should work:
Hope it helps!
Note: REQUEST_URI is slightly different between httpd.conf and .htaccess, it starts with an extra backslash in httpd.conf. This means that in httpd.conf the first rewrite rule should be
^\/$
, not just^$
.If request is empty apache 'redirects' to index.html so -RewriteCond %{REQUEST_URI} index- might help you.
I am using the following to catch empty REQUEST_URL:
RewriteEngine on
RewriteCond %{REQUEST_URI} "^/$"
RewriteRule ^(.*) http://%{HTTP_HOST}/my/another/url
This worked for me:
whitout the quotes on the empty validation
This should work:
I tried the options stated on this page, all I wanted was to check if the REQUEST_URI is empty (or in this particular case, a
/
):