【发布时间】:2013-12-27 23:25:10
【问题描述】:
我有很多网站共享相同的重写规则。
每个网站都有自己的域,在 Apache 中拥有自己的虚拟主机,并拥有包含公共文件的文件夹。文件夹使用/var/www/<domain>/ 模式,即。 /var/www/mydomain.com/
我的旧设置在每个网站的文件夹中包含单独的 .htaccess 文件。但是,由于性能原因,新系统禁用了 .htaccess,我需要将重写移至配置文件。
我不想创建一堆具有完全相同重写规则的<Directory> 块。我会创建一个块,将规则应用于/var/www/ 目录中的所有网站。
我尝试了以下代码:
<Directory /var/www/*>
RewriteEngine On
ErrorDocument 404 /404redirect.php
RewriteRule ^image.php/$ /image.php [L]
RewriteRule ^trial/$ /trial.php [L]
RewriteCond %{REQUEST_URI} !\.(gif|jpg|jpeg|png|js|css|png|sqlite)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/$ /player.php [L]
</Directory>
除了正确使用 404redirect.php 的 ErrorDocument 之外,没有任何作用。所有其余规则都不起作用并产生 404 错误。
如果我直接使用它,同样的代码可以完美运行,即。在<Directory /var/www/mydomain.com/>。
我对重写很陌生。有人能指点我如何让这个工作吗?
非常感谢大家提前抽出时间。
【问题讨论】:
标签: regex apache .htaccess mod-rewrite url-rewriting