【问题标题】:The same rewrite rules for many directories许多目录的相同重写规则
【发布时间】: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 错误。

如果我直接使用它,同样的代码可以完美运行,即。在&lt;Directory /var/www/mydomain.com/&gt;

我对重写很陌生。有人能指点我如何让这个工作吗?

非常感谢大家提前抽出时间。

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    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。

    【讨论】:

    • 你是对的,现在它可以完美运行,正如预期的那样。非常感谢阿努巴瓦。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 2018-07-06
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    相关资源
    最近更新 更多