10

vhost構成にmod_rewriteルールを追加しようとしていますが、機能していません。サイト「mysite.com」の場合、「/webmedia/」をホームページにリダイレクトしたいと思います。

これが私が持っているものです:

<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>
4

2 に答える 2

14

これは、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 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>
于 2012-04-16T18:59:27.310 に答える
0
<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 パターンは、スラッシュプレフィックスがあるため、ディレクトリコンテキスト(つまり、コンテナ内)では一致しません。<Directory>このように書かれている必要があります:

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

(トレーリング(.*)は不要でした。)

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

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

于 2018-12-17T16:11:44.123 に答える