Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在htaccess文件中使用正则表达式?_Regex_.htaccess_Mod Rewrite - Fatal编程技术网

Regex 如何在htaccess文件中使用正则表达式?

Regex 如何在htaccess文件中使用正则表达式?,regex,.htaccess,mod-rewrite,Regex,.htaccess,Mod Rewrite,我创建了一个regex[0-9]{1,10}[-][0-9a-z]{5,9}来查找1到10个数字,后面是破折号,后面是5到9个数字和小写字母,据我所知,它是如何工作的。但是我如何在htaccess文件中使用它来屏蔽从到的URL呢 我现在使用的规则是 RewriteRule /[0-9]{1,10}[-][0-9a-z]{5,9}/?$ realpage.php?id=$1 [QSA,L] …但它似乎不起作用。如果您使用它作为替换,您需要在希望匹配的位周围使用括号,$1表示第一个匹配的括号组,而

我创建了一个regex
[0-9]{1,10}[-][0-9a-z]{5,9}
来查找1到10个数字,后面是破折号,后面是5到9个数字和小写字母,据我所知,它是如何工作的。但是我如何在htaccess文件中使用它来屏蔽从到的URL呢

我现在使用的规则是

RewriteRule /[0-9]{1,10}[-][0-9a-z]{5,9}/?$ realpage.php?id=$1 [QSA,L]

…但它似乎不起作用。

如果您使用它作为替换,您需要在希望匹配的位周围使用括号,
$1
表示第一个匹配的括号组,而且您不需要在仪表板周围使用
[]

RewriteRule /([0-9]{1,10}-[0-9a-z]{5,9})/?$ realpage.php?id=$1 [QSA,L]

或者,如果你想用另一种方式,你的“屏蔽URL来源”会让人困惑

不能直接使用
RewriteRule
匹配查询字符串参数

您必须使用
RewriteCond
与之匹配,然后使用
RewriteRule
进行重写

RewriteCond %{QUERY_STRING} id=([0-9]{1,10}[-][0-9a-z]{5,9})
RewriteRule ^realpage.php$ /%1/ [L]

首先,我猜你想用另一种方式来掩饰

无论如何,您的重写规则将是:

RewriteRule ^([0-9]{1,10}-[0-9a-z]{5,9})/?$ realpage.php?id=$1 [QSA,L]
注:

  • 假设您的规则位于.htaccess文件中,则不需要 用斜杠(
    /
    )包装您的模式
  • 你不需要 包括第一个url斜杠(域后的一个)
  • 中间的破折号不必在括号中,因为您只需要一个 冲刺
  • 最后,你需要把整件事都用括号括起来 在本例中,可以使用
    $1
    将其引用(重写)到实际路径 案例

  • 希望这是有意义的。

    如果规则不是在.htaccess中,而是在配置文件中(例如在
    中),则需要前导斜杠