#1 wangyz636

这是新版框架的Apache服务器伪静态配置文件:

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


始终看不懂上面红色的两行是什么意思:
第一行红色,匹配的是index.php,为什么用“-”中划线来替代?后边为什么加个[L],[L]不是表示最后的意思(立即停止重写操作)吗?在这里停止重写后边的代码还有什么意义?

第二行红色:一个点匹配的是什么?始终看不懂第二行红色用什么重写什么?


2020-08-06 15:52:39

#2 jake

首先,这是抄wordpress的官方htaccess的匹配,wordpress是世界上最广泛使用的php程序,这段代码经得起考验。

从技术来说,它的整个作用是将所有没有存在的文件或者目录,都转发到index.php
第一行匹配index.php,意思是将其设空,L停止匹配(不是下面没用了,L只是匹配上才停止,不匹配不停止,也就是不是index.php还会继续匹配下去),因为是index.php就是匹配到index.php,但不需要带上index.php的参数,所以为减号置空
第二行是因为上面两行已经排除存在文件名和目录名,所以点号是全部,把所有的请求发给index.php。这里和上面的L呼应,因为如果上面没有L,那么index.php会一直匹配到index.php死循环。

2020-08-07 09:23:16

#3 wangyz636

哦,貌似明白了,但还是得经常回来看看帖子温故下。:lol

2020-08-07 20:08:14