Articles of 正则expression式

Nginx的RegEx匹配一个目录和文件

我想知道是否有可能匹配WordPress的目录和特定的文件在同一个位置,所以目前我有规则只匹配wp-admin目录: ## Restricted Access directory location ^~ /wp-admin/ { auth_basic "Access Denied!"; auth_basic_user_file .users; location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 我想也匹配wp-login.php文件,但我无法去工作,我已经尝试了以下内容: location ^~ /(wp-admin/|wp-login.php) { …

使用正则expression式适当的设置postfix header_checks

我似乎无法弄清楚为什么header_checks没有被评估。 我在Ubuntu 12.04,后缀2.7,鸽舍,spamassasin,clamav,amavis。 我将以下行添加到/etc/postfix/main.cf: header_checks = regexp:/etc/postfix/header_checks 这里是header_checks: /From: .*/ REPLACE From: [email protected] 要testing出正则expression式: #postmap -q "From: <werwe>" regexp:/etc/postfix/header_checks 这正确评估,并给我返回输出: REPLACE From: [email protected] 但是,当我尝试从命令行或从PHP网页发送电子邮件,后缀将不会取代从头。 我很难过 我想重写所有传出的电子邮件: From: Confirmation Email<[email protected]> – 变成 – From: Confirmation Email<[email protected]> 任何帮助将不胜感激。

Htaccess的正则expression式奇怪的工作

我正在努力写入.htacess文件,将抓住urls像: http://www.site.com/pageone.html http://www.site.com/pagetwo.html 并将它们redirect到index.php,这样就可以将“ pageone ”和“ pagetwo ”作为GET参数。 以下是我的答案: 选项+ FollowSymlinks AuthUserFile / dev / null AuthGroupFile / dev / null RewriteEngine On RewriteOptionsinheritance RewriteRule ^((?:。[^ /])+)。html $ index.php?page = $ 1 [L] AddHandler php5脚本.php 这个正则expression式的问题是它捕获了一些页面,同时在其他页面上显示404错误。 而我不明白这个行为。 例如 http://www.site.com/draw.html 工作正常。 我在脚本中获取'draw'作为GET参数。 但 http://www.site.com/draws.html redirect到404页面 任何人都可以解释我的htacess有什么问题吗? ps – 我在典型的MAMPconfiguration下在本地的Apache服务器上看到这个。

Lighttpd虚拟主机正则expression式

我与我的虚拟主机使用正则expression式有问题。 当我使用下面的代码,我得到一个404没有find: $HTTP["host"] =~ "(^|\.)example\.com$" { … } 但是,当我明确地将其设置为以下时,我可以访问我的网站: $HTTP["host"] == "example.com" { … } 有谁知道这是为什么发生? 文档相当稀less。

我如何使用htaccessreplaceURL中的撇号?

我有一个search框的网站。 search字词作为$ _GET的一部分传递给search页面(我使用的是PHP,但我认为这与我遇到的问题无关),所以我的最终url就像www.example.com/ search.php中?search关键词=史密斯。 但是,我发现如果在search词中包含撇号(例如www.example.com/search.php?searchterm=o'hagen),服务器将返回406错误。 我以为我可能能够在htaccess文件中捕捉到它,并重写它可用的东西,但我迄今还没有能够。 到目前为止我已经尝试了这些: RewriteRule ^([^/]*)'([^/]*)$ $1\'$2 [N,E=redirect:1] 和 RewriteRule ^([^/]*)'([^/]*)$ $1%27$2 [N,E=redirect:1] 这些对我都没有好处。 任何人都可以build议我可以使用呢? 编辑:目前我已经去改变searchforms到POST和在代码中处理这个,但我仍然好奇,我怎样才能让Apache接受GET查询string中的search字词。

在没有if块的情况下,用正则expression式在NGiNX中提取匹配

使用NGiNX,我得到一个string,其中包含我可以用正则expression式提取内容的信息。 但是,我发现我能做到这一点的唯一方法就是如果封锁。 还有别的办法吗? 提取的值需要设置在一个variables中。

Ngnix重写 – 如果URL包含

我有一个小问题 – 我的错误日志填满了我的网站上的目录文件夹的请求(但添加的数据不应该在那里)。 http://example.com/the-directory/undefined http://example.com/the-directory/administrator http://example.com/the-directory/admin http://example.com/the-directory/script 如何设置重写,以便包含以下内容的任何请求: /the-directory/{any extra data} 301redirect到 /the-directory/ 我所尝试的是: rewrite ^/the-directory/(.*)$ /the-directory/ last; 但是,这只是陷入redirect循环。 任何帮助将不胜感激。

在DirectoryMatch指令中使用命名组

我在我的httpd.conf中有以下指令: <DirectoryMatch ^/path/(?P<SI>[^/]+)/logs/bibi> php_admin_value open_basedir /path/?P=<SI>/ </DirectoryMatch> (?P<SI>[^/]+)模式识别是有效的,但是我不知道如何使用指令中的指令。 网站http://httpd.apache.org/docs/current/sections.html是非常有用的(语法不能用我的2.2 apache),但至less他们提到的可能性: 包含命名组和反向引用的正则expression式将以相应的名称以大写forms添加到环境中。 这允许在expression式和模块(如mod_rewrite)中引用文件名path和URL的元素。 <DirectoryMatch ^/var/www/combined/(?<SITENAME>[^/]+)> require ldap-group cn=%{env:SITENAME},ou=combined,o=Example </DirectoryMatch> 任何想法? 我想使用一个命名组成指示。

在导入之前使SQL转储中的电子邮件地址无效

概要 我想将生产数据导入到开发环境中,以便能够以几乎准确的方式进行testing。 当然,我需要使电子邮件地址无效,因为我不想让电子邮件到达最终用户。 资源 只是一个侧面说明 – 我的expression式故意匹配[']作为查询语法的一部分 到目前为止,我有以下使用grep这是testing我的expression。 $ cat site_backup.sql | egrep -io '\w+([._-]\w*)@\w+([._-]\w*)\.\w{2,4}' 这是打印的电子邮件地址,但我当然需要使用sedreplace: $ sed -r -e "s/'(\w+)([._-]\w*)@(\w+)([._-]\w*)(\.\w{2,4})'/\1\2@invalid.\3\4\5/g" -i site_backup.sql 在一小部分电子邮件地址上工作正常; 我注意到了一个没有被replace的模式'[email protected]' 结论 在为此添加另一个expression式之后,它没有任何影响。 我还没有研究过awk ,我知道这个awk非常强大,所以我并不是无知,我希望有人能帮上忙。 我的目标很简单,我使用mysqldump导出生产数据库,然后希望在将数据导入到开发环境之前,replace所有的电子邮件地址(或尽可能多的)。 我可能从一个尴尬的angular度做这个?

在Nginx重写规则中匹配%ff

我有一些可疑的请求进入我的服务器,包含%ff和%FF (例如, /blog/%ffupdates/ 。我每天得到数以千计,并希望开始redirect到403.我目前有一个端点我用这个黑洞这样的事情,并想重写这些URL指向该端点。 目前,我正在尝试: rewrite ^/.*?%ff.*?$ https://domain.com/forbidden permanent; 我完全明白,这可能太过于贪婪的比赛; 不过,我只是想尽一切办法来开始工作。 现在,当我尝试这一点,并查看debugging日志,好像%ff被转换为 (是的,这应该是问号钻石thingy)。 例如,在日志中有这样的事情: *4 "^/.*?%ff.*?$" does not match "/blog/ updates/" 看来,因为%ff被转换,我实际上不能匹配string。 我使用SSL和SPDY运行Nginx 1.7.1。 有什么想法吗?