web-dev-qa-db-ja.com

vhosts構成のmod_rewrite

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>
10
EricP

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>
14
Seybsen
<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>

このRewriteRulepatternは、スラッシュプレフィックスがあるため、directoryコンテキスト(つまり、<Directory>コンテナ内)では一致しません。このように書かれている必要があります:

RewriteRule ^webmedia/ / [R=301,L]

(末尾の(.*)は不要でした。)

ただし、これは<Directory>コンテナ内にあるため、.htaccessにあるmod_rewriteディレクティブ(AllowOverride Allがあるため)はこれをオーバーライドする可能性があります。

.htaccessを使用していて、これが望ましくない場合は、<Directory>コンテナーから取り出して、<VirtualHost>コンテナー(virtualhost-)に直接入れる方がよいでしょう。 context)-@ Seybsenが彼の答えで行ったように。

0
MrWhite