许多目录都有相同的重写规则



我有很多网站共享相同的重写规则。

每个网站都有自己的域,在Apache中有自己的vhost,还有自己的带有公共文件的文件夹。文件夹使用/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/>中,同样的代码也能很好地工作。

我是重写方面的新手。有人能给我指一下我该怎么做吗?

非常感谢大家提前花时间讨论这个问题。

Apache配置的重写规则需要前导斜杠。试试这个代码:

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

不要忘记在更改后重新启动Apache。

最新更新