【发布时间】:2012-04-27 20:45:24
【问题描述】:
我正在尝试在 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>
【问题讨论】:
-
为什么不将您的规则移动到
.htaccess文件中?这将更容易管理,因为您不必在每次修改后重新启动 Apache。 -
.htaccess 文件越来越大,我听说服务器从 vhosts 文件中读取它的效率更高。对吗?
-
是的,如果没有
AllowOverride All,Apache 可能会更快,因为它不必在每次请求时都读取您的 .htaccess 文件。我猜这里的性能增益非常很小。你目前在你的.htaccess中有什么让它变大? -
它在一个多站点 Drupal 安装中,其中有许多项供 Drupal 工作,但我必须添加许多重写以防止在数据库中记录许多“找不到页面”错误。我们从另一台服务器移出,有很多旧页面和目录试图访问,但它们不再存在。另外我只是想知道如何以我自己的知识。谢谢。
标签: apache mod-rewrite virtualhost