【问题标题】:ALLOW only some strings in a url pattern via .htaccess通过 .htaccess 只允许 url 模式中的一些字符串
【发布时间】:2019-07-14 16:31:09
【问题描述】:

我需要使用 htaccess 和正则表达式阻止对随机 url 字符串的访问以阻止机器人,并只允许某些字符串,其中一些必须包含部分随机内容。

我需要允许访问:/shows/page/、/shows/sort/、/shows/genre/、/shows/release/、/shows/!(任何字符串) -并否认:/shows/“其他任何东西”/。 需要允许访问包含 /shows/!(any string)/ 的任何 url,这使得列出特定的允许 url 成为不可能。

目前我正在使用

RewriteRule ^shows/[^srgp!] - [NC,F]

通过允许访问上述网址并拒绝访问以除“/shows/s,r,g,p,!”以外的任何内容开头的任何地址来部分工作

但是,它仅根据第一个字符进行比较,因此允许 /shows/something、/shows/random、/shows/generate,和类似的......所以仍然有很多不需要的流量通过。

我需要允许比较整个单词并允许“!”后跟任何字符串。我试过了

RewriteRule ^shows/^((?!page|sort|genre|release|!).)*$ - [NC,F]

以及各种类似的解决方案,但未能成功实施。

【问题讨论】:

  • 您可能会在站长 stackexchange 获得更好的帮助:webmasters.stackexchange.com
  • “但未能成功实施”究竟是什么意思?
  • 意味着我没有尝试过完全正确的工作,根据目标。

标签: regex .htaccess


【解决方案1】:

好的,所以我想出了一个方法,只是没有我想要的那么干净——我添加了一个额外的“!” /shows/!(random_string) url 的字符,所以它是 /shows/!!(random_string)。然后,我为每个允许的 url 的第二个字符添加了单独的匹配规则:

#block url pattern SHOWS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^shows/[^srgp!] - [NC,F]
RewriteRule ^shows/p[^a!] - [NC,F]
RewriteRule ^shows/s[^o!] - [NC,F]
RewriteRule ^shows/g[^e!] - [NC,F]
RewriteRule ^shows/r[^e!] - [NC,F]
RewriteRule ^shows/![^!] - [NC,F]
</IfModule>
#end block url pattern

然后,这匹配我允许的 url 的前两个字符,而不仅仅是第一个字符,并阻止其他任何内容,这似乎增加了可接受的安全级别。如果必须,我可以以类似的方式添加整个 url 字符串,这也将使得有必要添加另一个“!”字符到允许的 url /shows/!!(random_string) 为每个允许的新字符 - 这是我通过永久链接结构做的。

【讨论】:

    猜你喜欢
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多