1

我没有很好地阅读正则表达式。有人可以帮我理解这到底在做什么吗?

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

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

4

1 回答 1

2

此正则表达式将匹配一个 url

  • 以 !、/ 或 . 开头。和
  • 后跟正斜杠、大写字母或数字。

所有符合此规则的 URL 请求都将发送到 index.php。

这是一个非常不寻常的 RewriteRule,因为它启用了以下 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
于 2013-02-04T08:54:08.650 回答