我目前正在尝试通过VirtualHost的ServerName
在apache配置文件中匹配单个Apache VirtualHost条目。我正在使用python,使用re
模块。
这是我正在使用的文件类型的示例:
<VirtualHost *:8000>
DocumentRoot "/path/to/dir1"
ServerName eg1.dev
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/path/to/docroot"
ServerName desired.dev
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "/path/to/dir3"
ServerName eg2.dev
</VirtualHost>
我想将VirtualHost与
ServerName
的desired.dev
匹配。所以我的目标是:<VirtualHost *:80>
DocumentRoot "/path/to/docroot"
ServerName desired.dev
</VirtualHost>
我以为使用正则表达式会很简单,但是我不知道该怎么做。我目前有:
<VirtualHost \*:[0-9]*>.*?ServerName +desired\.dev.*?</VirtualHost>
但是,这样做的问题是它与第一个
<VirtualHost...
匹配,与ServerName
匹配,并在所需VirtualHost的结束标记结尾处停止匹配。我知道可能有用于解析Apache配置文件的python模块,但我不希望使用标准库之外的任何内容。如果使用正则表达式尝试这样做是一个糟糕的主意,还有其他选择吗?
最佳答案
<VirtualHost \*:[0-9]*>(?:.(?!</VirtualHost))*?ServerName +desired\.dev(?:(?!</VirtualHost).)*?</VirtualHost>
尝试这样做,它使用前瞻性来确保它没有在任何VirtualHost关闭标签上运行。
关于python - 将特定的Apache VirtualHost与regex匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19126342/