I have a server which is hosting just a single site and because of this, I intend to redirect all traffic from domains which isn't mine to my domain. For example, if a random person decides for some reason to point their domain to my server, when my server gets the request it redirects to my domain. I have tried various rules in teh .htaccess then going to the IP address to test this but each time I try, it stays on the IP address and doesn't redirect to the domain. Because of this, I decided to start working on just getting it to redirect from the IP to the domain. This is what my .htaccess file currently looks like:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^1\.2\.3\.4
RewriteRule (.*)  [R=301,L] 

I have checked through my httpd.conf file and ensured that .htaccess is enabled and that the FollowSymLinks option is enabled (which is why it is not in the .htaccess file) but the redirect still isn't working. I've had a look online and I can't see anything wrong with what I have in my .htaccess file. Could someone give me some pointers on what I need to do or change?

You've probably already worked it out but the IP and domain in the above is not my IP or domain...

Dani AI

Generated

Solved: the .htaccess rules never ran because Apache wasn’t reading the file — a typo in the server config prevented it. Good catch by . The community suggestions from and about canonicalizing hosts and ensuring the right options are useful; below are practical checks and safer alternatives to try next time.

Quick checklist to diagnose .htaccess not being applied

  • Confirm the server config points to the correct filename and that the directory has AllowOverride set so .htaccess is allowed.
  • Check file ownership and read permissions for the web user.
  • Inspect Apache error_log right after a request — unknown-directive or parse errors mean the file was read but invalid.
  • To simulate Host headers (important when testing by IP), run:
curl -I http://SERVER_IP/
curl -I -H "Host: yourdomain.example" http://SERVER_IP/

If the first returns no redirect but the second does, your rules are being evaluated based on the Host header.

Prefer config-time redirects for catch-all behavior
Putting a simple redirect in the default VirtualHost is cleaner and faster than relying on per-request .htaccess parsing. Make the redirect vhost the first one Apache loads so it becomes the fallback for requests that don’t match any ServerName/ServerAlias:

<VirtualHost *:80>
    ServerName fallback.local
    Redirect 301 / http://yourdomain.example/
</VirtualHost>

Other tips

  • Use temporary (302) redirects while testing to avoid browser caching of 301s.
  • Remember HTTPS: certificate name mismatches will be shown before a redirect can happen, so plan TLS redirects separately.
  • When you finally change server config, restart Apache and re-check logs.

This should help reproduce and fix cases where “nothing happens” when testing IP or stray domains.

Recommended Answers

All 7 Replies

This should work for re-routing the domain, just change domain to your wanted domain:

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

That's what I had beforehand but that's not working. I want my site redirecting away from www and not to it so this is what I have for domain redirection:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^domain\.co\.uk$
RewriteRule (.*)  [R=301,L]

I must have screwed something up in my httpd.conf file I reckon so I'm going to try rebuilding it and see if that helps.

Member Avatar for Member #120589
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,NC]

I think you're getting a lot of variations on the same theme. :(

I found the problem. It looks like I had accidentally changed the line specify the name of the .htaccess file in the httpd.conf file. The line should read:

AccessFileName .htaccess

But I had accidentally changed it to:

AccessFileName .htacess

Which was causing the problem. I've corrected it and restarted apache and it's now working correctly.

Gotta love those 1 letter typos that just screw everything up! lol

Member Avatar for Member #120589

Glad you admitted to that. Well done! I was beginning to doubt the pooled widsom of the contributors :) +1 from me.

Pretending it started working randomly isn't going to help anyone. We're all human and miss things sometimes. Admitting to my mistake will hopefully help others who are having a similar problem.

commented: well said +14
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.