I'm trying to add mod_rewrite rules in the vhost config but it's not working.
For the site "mysite.com" I want to redirect "/webmedia/" to the home page .
Here is what I have:
<VirtualHost 192.168.100.142:80>
ServerAdmin serveradmin@bbgi.com
DocumentRoot /home/drupal_1
ServerName mysite.com
ServerAlias www.mysite.com
Alias /movies /home/movies/
ErrorLog /var/log/httpd/mysite.com_err_log
CustomLog /var/log/httpd/mysite.com_log special
<Directory /home/drupal_1>
Options FollowSymLinks Includes ExecCGI
AllowOverride All
DirectoryIndex index.html index.htm index.php
# Rewrite Rules #####################
RewriteEngine On
RewriteRule ^/webmedia/(.*) / [R=301,L]
# end Rewrite Rules #################
</Directory>
<Directory /home/movies>
Options FollowSymLinks Includes ExecCGI
AllowOverride All
DirectoryIndex index.html index.htm index.php
</Directory>
</VirtualHost>
This should work if you have mod_rewrite loaded.
<Directory /home/drupal_1>
Options FollowSymLinks Includes ExecCGI
AllowOverride All
DirectoryIndex index.html index.htm index.php
</Directory>
<Directory /home/movies>
Options FollowSymLinks Includes ExecCGI
AllowOverride All
DirectoryIndex index.html index.htm index.php
</Directory>
<VirtualHost 192.168.100.142:80>
ServerAdmin serveradmin@bbgi.com
DocumentRoot /home/drupal_1
ServerName mysite.com
ServerAlias www.mysite.com
Alias /movies /home/movies/
ErrorLog /var/log/httpd/mysite.com_err_log
CustomLog /var/log/httpd/mysite.com_log special
# Rewrite Rules #####################
RewriteEngine On
RewriteRule ^/webmedia/(.*) / [R=301,L]
# end Rewrite Rules #################
</VirtualHost>
<Directory /home/drupal_1>
Options FollowSymLinks Includes ExecCGI
AllowOverride All
DirectoryIndex index.html index.htm index.php
# Rewrite Rules #####################
RewriteEngine On
RewriteRule ^/webmedia/(.*) / [R=301,L]
# end Rewrite Rules #################
</Directory>
This RewriteRule
pattern would never match in a directory context (ie. inside a <Directory>
container) because of the slash prefix. It would have needed to have been written like this:
RewriteRule ^webmedia/ / [R=301,L]
(The trailing (.*)
was superfluous.)
However, since it's in a <Directory>
container, any mod_rewrite directives that you have in .htaccess
(since you have AllowOverride All
) could potentially override this.
If you are using .htaccess
and this is undesirable then probably better to take it out of the <Directory>
container and have it directly in the <VirtualHost>
container (a virtualhost
context) - as @Seybsen has done in his answer.