apache - Apache 中多个目录的规则相同吗?

标签 apache mod-rewrite url-rewriting

我有 2 个使用相同规则的子域,如下所示:

<Directory /srv/project/sites/project.hu/htdocs/>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)\?*$ index.php?route=$1 [L,QSA]
    SetEnv config default,local
    Order allow,deny
    allow from 192.168.0.0/16
</Directory>

<Directory /srv/project/sites/admin.project.hu/htdocs/>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)\?*$ index.php?route=$1 [L,QSA]
    SetEnv config default,local
    Order allow,deny
    allow from 192.168.0.0/16
</Directory>

如您所见,两个容器中的规则相同。
如何在单个容器中指定这些规则?
起初我想用这个:
<DirectoryMatch ^/srv/project/sites/(?:(?:admin\.project\.hu)|project\.hu)/htdocs/$>
 ...
</DirectoryMatch>

但是,难道没有一种方法可以以我所缺少的更干净的方式做到这一点吗?

编辑:
我不喜欢 DirectoryMatch 方式,因为当我拥有更多目录时,正则表达式将变得无法维护。

最佳答案

将重写规则放入一个单独的文件中,例如。 rewrite.conf , 和 include它喜欢这样

<Directory /srv/project/sites/project.hu/htdocs/>
  Include rewrite.conf
</Directory>

<Directory /srv/project/sites/admin.project.hu/htdocs/>
  Include rewrite.conf
</Directory>

关于apache - Apache 中多个目录的规则相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/688100/

相关文章:

asp.net - Url 重写与路由

apache - 未设置 CORS header

Java 以编程方式绕过代理 apache

apache - 我找不到 apache http 服务器 msi 安装程序

java - 通过 JT400 的 JDBC 适用于本地 Apache Tomcat 8 安装,但在服务器上运行的 Apache Tomcat 8 上失败

php - 如何创建 .htaccess 文件以创建友好的 URL

apache - 重定向 301 域和一些页面

php - HTACCESS : Dynamic rewrite url with multiple variables

java - 如何将此 Apache 重写规则转换为 Tuckey UrlRewriteFilter 规则?

.htaccess - 将 URL 查询字符串替换为斜杠以获得友好的 URL