Vhost構成にmod_rewriteルールを追加しようとしていますが、機能しません。サイト「mysite.com」の場合、「/ webmedia /」をホームページにリダイレクトしたいと思います。
これが私が持っているものです:
<VirtualHost 192.168.100.142:80>
ServerAdmin [email protected]
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>
Mod_rewriteがロードされている場合、これは機能するはずです。
<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 [email protected]
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>
このRewriteRule
patternは、スラッシュプレフィックスがあるため、directoryコンテキスト(つまり、<Directory>
コンテナ内)では一致しません。このように書かれている必要があります:
RewriteRule ^webmedia/ / [R=301,L]
(末尾の(.*)
は不要でした。)
ただし、これは<Directory>
コンテナ内にあるため、.htaccess
にあるmod_rewriteディレクティブ(AllowOverride All
があるため)はこれをオーバーライドする可能性があります。
.htaccess
を使用していて、これが望ましくない場合は、<Directory>
コンテナーから取り出して、<VirtualHost>
コンテナー(virtualhost
-)に直接入れる方がよいでしょう。 context)-@ Seybsenが彼の答えで行ったように。