当前位置:  开发笔记 > 前端 > 正文

如何在Apache中实现适用于所有虚拟主机的全局RewriteCond/RewriteRule?

如何解决《如何在Apache中实现适用于所有虚拟主机的全局RewriteCond/RewriteRule?》经验,为你挑选了4个好方法。

标题基本概括了所有内容.:-)我有很多虚拟主机,我想在httpd.conf文件的顶部放一个重写块,无论请求可能指向哪个虚拟主机,它都会重写URL.我怎么做到这一点?

我找到了这个,但我的问题是一样的:如何在不使用.htaccess文件并为每个虚拟主机执行其他操作的情况下执行此操作?

OMGTIA!



1> Zava..:

默认情况下,虚拟主机不会继承主服务器上下文中的mod_rewrite配置设置.要使主服务器设置应用于虚拟主机,必须在每个部分中放置以下指令:

RewriteEngine On
RewriteOptions Inherit 

单击http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html以查找更多信息



2> Matej Snoha..:

RewriteOptions InheritDown在父作用域(例如httpd.conf)中指定以在子虚拟主机中应用规则而不对其进行修改.

这仅适用于RewriteEngine指令设置为的虚拟主机on:

请注意,虚拟主机不会继承重写配置.这意味着您需要为要在其中使用重写规则的每个虚拟主机指定RewriteEngine on指令.

(来源)

Apache自2.4.8起支持此功能(在原始问题时不可用).

从文档RewriteOptions:

InheritDown

如果启用此选项,则所有子配置都将继承当前配置的配置.它等同于在所有子配置中指定RewriteOptions Inherit.有关如何处理父子关系的更多详细信息,请参阅继承选项.可在Apache HTTP Server 2.4.8及更高版本中使用.

InheritDownBefore

与上面的InheritDown类似,但是当前范围的规则在任何子范围中指定的规则之前应用.可在Apache HTTP Server 2.4.8及更高版本中使用.

IgnoreInherit

此选项强制当前配置和子配置忽略将从父指定InheritDown或InheritDownBefore继承的所有规则.可在Apache HTTP Server 2.4.8及更高版本中使用.

(http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions)



3> Travis Wilso..:

看起来最简单的解决方案是添加

RewriteOptions inherit

每个VirtualHost指令.这比使用.htaccess文件搞乱要简单得多.Apache非常清楚这一事实

默认情况下,不会继承重写配置.这意味着您需要为要使用它的每个虚拟主机指定RewriteEngine on指令.(http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html)

显然,更改默认值的方法是通过子级中的RewriteOptions(vhost或director),因此您必须在每个子级中执行某些操作.


从Apache 2.4.8开始,您可以将httpd.conf(或其他)与`RewriteOptions InheritDown`一起使用,它等同于在所有vhost中指定`RewriteOptions Inherit`.

4> Jeremy Bourq..:

我从来没有测试它,所以它可能不起作用,但我会尝试将include所有虚拟主机块中的指令添加到单个文件中.您必须更改每个虚拟主机配置块一次,但在此之后,您应该有一个可以进行更改的中心位置.因人而异.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有