A web app running on CentOS 7 with Apache 2.4 recently changed its domain name from `olddomain.com` to `newdomain.com`.  The structure of the app at the `newdomain.com` is different than on the `olddomain.com`, so all requests from the `olddomain.com/anyurl` need to be redirected to the root url `newdomain.com`.  
  
**A new `.htaccess` file was created, and `httpd` was restarted, so why do requests for `olddomain.com/testbadurl` fail to redirect to `newdomain.com`?**  Instead, the user just gets a 404 error at `olddomain.com/testbadurl`.  
  
Here are the steps that were taken at the command line:  
  
    # nano /etc/httpd/conf/httpd.conf
  
        <Directory "/var/www/html">
            AllowOverride All
        </Directory>
  
    # sudo systemctl restart httpd
    # cd /var/www/html

    # nano /var/www/html/.htaccess
  
        Options +FollowSymLinks
        RewriteEngine On
        RewriteBase /
        RewriteCond %{HTTP_HOST} !^olddomain\.com$ [NC]
        RewriteRule ^(.*)$ http://newdomain.com [R=301,L]
  
    # systemctl restart httpd
  
Then the test user types `olddomain.com/testbadlink` in the web browser.  The logs at `nano /var/log/httpd/olddomain_com_requests.log` show a `404 error`.  
    
-----------------------------------------------------------------  
  
**ANSWER:**  
  
-----------------------------------------------------------------  
  
@garethTheRed got me thinking about `VirtualHost` directives in the `httpd` `conf` files, which ultimately led me to develop the following answer, which works and now solves the problem:  
  
    <VirtualHost www.olddomain.com:80>
        ServerName www.olddomain.com
        ServerAlias olddomain.com
        ErrorLog /var/log/httpd/olddomain_com_error.log
        CustomLog /var/log/httpd/olddomain_com_requests.log combined
        RedirectMatch ^(.*)$ http://newdomain.com
    </VirtualHost>  
  
Note that it is more secure to have the `httpd` `conf` files do this than to allow external access to an `.htaccess` file.