Articles of 正则expression式

如何转换RewriteCond规则,使他们在Lighttpd中工作?

我怎样才能转换这个Apache重写规则,使他们在Lighttpd上工作? 这实际上是一个.htaccess文件,我需要把它们放在一个lighttpd.conf文件中。 Options +FollowSymLinks RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule www.(.*) web.php?url=$1 RewriteRule sitemap/(.*) mapdi.php?page=$1 RewriteRule tags_(.*)\.html$ tags.php?keywords=$1 RewriteRule ^([^-]*)-page-([^-]*)\.html$ tags.php?keywords=$1&page=$2 [L] RewriteRule ^sitemap_([^-]*)\.html$ sitemap_web.php?page=$1 [L] RewriteRule ^sitemap\.html$ sitemap.php$1 [L] RewriteRule ^privacy\.html$ privacy.php$1 [L] 我转换了一部分代码,但不知道如何转换: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ …. …. 这是我可以转换: url.rewrite-once = ( RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} […]

使用RegEx的Exchange 2013邮件stream规则

我们正试图对某些邮箱实施一项规定,即不接受没有主题的电子邮件。 我在Exchange 2010上find了来自Microsoft的文档, 为具有空白主题的邮件configuration传输规则 ,但是我尝试在Exchange 2013中使用^$ RegEx,但似乎不起作用。 我还查看了Exchange 2013的传输规则谓词 ,并明确指出, SubjectMatchesPatterns matches messages where text patterns in the Subject field match a specified regular expression 。 我的解决方法是拒绝所有邮件到这些特定的邮箱,除非主题模式匹配. 但如果我想现在添加条件即。 拒绝带有主题的电子邮件“从我的剪辑工具发送”我不能这样做。 我发现Exchange 2013现在支持扩展正则expression式,但是我没有发现^$的语法在扩展正则expression式中应该是任意的。

mod_pagespeed ModPagespeedLoadFromFile ReGex不工作

我有以下指令在MPSconfiguration: ModPagespeedLoadFromFile "^https?://www.(e|i)zi?aro(v|w)k(y|i).(cz|sk|pl)/static/" "/var/www/eZarovky/production/public/static/" 这RegExp应匹配我们的域的所有变化,例如。 https://www.eziarovky.sk https://www.ezarovky.cz 等等,但它没有。 根据PECL正则expression式testing仪,它应该匹配,但它不。 通过直接映射,如下所示,一切正常。 ModPagespeedLoadFromFile "https://www.ezarovky.cz/static/" "/var/www/eZarovky/production/public/static/" 请问RegExp应该如何?

清漆 – 多个捕获所有域名

为了避免为每个子域设置一个备份,我为每个域名指定了一个通用的正则expression式string,如下所示: backend domain1 { .host = "10.10.10.5"; .port = "80"; } backend domain2 { .host = "10.10.10.6"; .port = "80"; } sub vcl_recv { if (req.http.host ~ "^(.*\.)?domain1\.com$") { set req.backend = domain1; } if (req.http.host ~ "^(.*\.)?domain2\.com$") { set req.backend = domain2; } } 然而,当我尝试访问domain2.com时,Varnish将始终在第一个子域(sub1.domain1.com)上显示该网站。 domain1.com下的所有子域均按预期加载。 我是否缺less一些参数?

NGINX中的可选url段

我需要代理将多个段进一步传递给另一个服务器,最多可以有两个5段。 nginx需要匹配什么 example.com/somehash example.com/somehash/segment1 example.com/somehash/segment1/segment2 example.com/somehash/segment1/segment2/segment3 example.com/somehash/segment1/segment2/segment3/segment4 example.com/somehash/segment1/segment2/segment3/segment4/segment5 现在,代码如下,只匹配 example.com/somehash example.com/somehash/segment1 为此,我们有这样的代码块: location ~* ^/([a-z0-9]+)/?$ { proxy_pass http://@tds/direct/$1?$args; proxy_set_header Referer $http_referer; proxy_set_header X-Original-Host $server_name; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_redirect off; } location ~* ^/([a-z0-9]+)/([A-Za-zА-Яа-я0-9\-\_\[\]\{\}\.]+)/?$ { proxy_pass http://@tds/direct/$1/$2?$args; proxy_set_header Referer $http_referer; proxy_set_header X-Original-Host $server_name; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header […]

SED由Wpkg启动时返回错误2

案件 我正在Windows工作站上使用Wpkg部署一个软件产品。 我需要禁用产品的错误自动更新,在这种情况下,最好的解决scheme是使用以下正则expression式修改一个configuration文件: s/<value>.*<\/value>/<value>file:\\\\<\/value>/g 问题 为了执行所描述的任务,我使用SED: %BASH%\sed "s/<value>.*<\/value>/<value>file:\\\\<\/value>/g" "MyApp.config" > "MyApp.config.tmp"` 每当我从命令行执行它,它的工作。 但是,一旦我把它粘贴到Wpkg( <>由于XML约束而转义): <install cmd='%BASH%\sed "s/&lt;value&gt;.*&lt;\/value&gt;/&lt;value&gt;file:\\\\&lt;\/value&gt;/g" "%PKG_DESTINATION%\MyApp.config" &gt; "%PKG_DESTINATION%\MyApp.config.tmp"' /> …失败,创build没有新的文件和…返回神秘的错误代码2: Exit code returned non-successful value (2) on command '%BASH%\sed "s/<value>.*< \/value>/<value>file:\\\\<\/value>/g" "%PKG_DESTINATION%\MyApp.config" > "%PKG_D ESTINATION%\MyApp.config.tmp"'. 题 在search那个神秘的错误代码2一小时半之后,我开始相信我和谷歌的关系有什么问题,或者确实没有关于这个错误的文档。 官方手册也让我失明。 我已经尝试将该Wpkg命令的stderr转储到文本文件,但该文件没有被创build,这表明没有stderr转储。 也许第二或第三双眼睛会帮助我find问题的根源?

显示传递给fastcgi的nginx日志和参数中的真实服务器名称?

我用server_name中的正则expression式configuration了我的nginx虚拟主机。 nginx显示日志中的原始正则expression式和传递给php-fpm的参数(我知道$_SERVER['HTTP_HOST']具有实际值,这不是问题)。 我的问题是我怎么能让nginx把真正的主机名,而不是正则expression式。 server_name指令看起来像这样: server_name ~^(:?(?<second>.+)\.)?(?<domain>[^.]+\.[^.]+)$;

Apache2 mod_rewrite,处理URL末尾的可选“/”

我正在尝试托pipe一个自定义页面,将其设置为我的服务器上的主页。 页面的真实path是example.com/start.html 。 但是,我不希望在我的主页中使用这个丑陋的URL,所以我试图让path是example.com/start/ 。 我的.htaccess文件内容是: <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^start\/?$ start.html [NC,L] </IfModule> 这会使example.com/start正确redirect,但是example.com/start/会导致404错误(强调URL最末尾的斜线)。 我得到的错误是: The requested URL /start.html/ was not found on this server. 我相信我在RewriteRule中的正则expression式是正确的(它应该接受“开始”或“开始/”,所以我不确定问题是什么。 我将不胜感激这个问题的任何帮助。

sudo:用户/组名中的通配符

我试图find一个关于sudo问题的解决scheme。 我需要在不同的服务器上推送不同的sudoers文件,具体取决于服务器上的用户。 但是我想知道我是否可以避免这种情况,并且把一个sudoers文件放在任何地方。 例如: 一些服务器有几个以“-dv-grp”结尾的组,一些服务器以“-pa-grp”结尾, 如果我能把通配符放在组名上,那将是非常好的: %*-grp ALL=(ALL) NOPASSWD: /usr/bin/vi 但它不工作,即使我设置User_Alias (我也尝试过简单和双引号)….我不能把所有这些组放在一个主组(为了安全的原因在我的下面)。 如果真的不可能,我将创build不同的组,把他们放在这些不同的组,但我将需要pipe理不同版本的sudoers文件…..我想避免 你能证实这是不可能的吗? 任何想法?

rsyslog正则expression式全局修饰符

许多正则expression式系统有能力设置一个全局修改器来允许多个匹配。 以下是它在Javascript和Perl中的工作原理 。 /g Python 有点不同 Python没有像Perl的/ g选项这样的全局修饰符。 要查找模式的所有匹配,请使用re.findall()而不是re.search()。 findall方法返回匹配列表而不是匹配对象。 如果匹配包含捕获的子expression式,findall将返回一个元组列表,这些元组就是捕获。 而这个名单还在继续 … 不过,我似乎无法find在文档中的任何地方如何设置rsyslog这样的修饰符。 一个在线testing实用程序是可用的,但它提到了以下内容: Rsyslog使用POSIX ERE(和可选的BRE)expression式。 这个检查器与php POSIX ERE函数一起工作。 所以从理论上讲,rsyslog(clib)包含的引擎和这个web应用程序之间可能有区别。 但实际上结果应该是相当一致的。 由于该工具使用php POSIX ERE函数 – 而且/g 修饰符在php中不起作用,所以我相信在rsyslog中需要与php函数preg_match_all相媲美。 有小费吗?