Regex 这个重写规则到底在做什么?

Regex 这个重写规则到底在做什么?,regex,mod-rewrite,url-rewriting,Regex,Mod Rewrite,Url Rewriting,我不太懂正则表达式。有人能帮我弄清楚这到底是怎么回事吗 RewriteRule ^[!/.]*([\/A-Za-z0-9]+)$ index.php 我有一个基本的想法,只是不是具体的清晰,我不想错过一些重要的东西。这个正则表达式将匹配一个 以!,/或及 后跟正斜杠、大写字母或数字 所有符合此规则的URL请求都将发送到index.php 这是一个非常不寻常的重写规则,因为它支持如下URL: http://example.com/!asdf http://example.com/!.asd

我不太懂正则表达式。有人能帮我弄清楚这到底是怎么回事吗

RewriteRule ^[!/.]*([\/A-Za-z0-9]+)$ index.php

我有一个基本的想法,只是不是具体的清晰,我不想错过一些重要的东西。

这个正则表达式将匹配一个

  • 以!,/或及
  • 后跟正斜杠、大写字母或数字
所有符合此规则的URL请求都将发送到index.php

这是一个非常不寻常的重写规则,因为它支持如下URL:

http://example.com/!asdf 
http://example.com/!.asdf2
http://example.com/!./asdf5
http://example.com/./asdf5
http://example.com/.asdf5
这种类型的重写规则通常用于将对不存在的文件/目录的请求定向到前端控制器。像这样的东西可能会更好地为您服务:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ index.php

再次感谢,这确实帮助我朝着正确的方向思考。最后我使用了这个正则表达式作为规则:^([\/\-?\A-Za-z0-9]+)$