我有一堆网站共享相同的重写规则。
每个网站都拥有自己的域名,拥有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/>
。
我是重写的新手。有人能指出我如何才能使这个工作?
非常感谢大家提前花时间做这件事。
答案 0 :(得分:0)
Apache config的重写规则需要前导斜杠。试试这段代码:
<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。