【发布时间】:2011-01-16 11:23:36
【问题描述】:
我见过 无数 RewriteRule 示例,大致如下:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
这里的目的是不由真实文件支持的 URI 将由 CMS 处理,通过 /index.php 连接。例如,WordPress 在其standard(?) .htaccess file 中使用了这种技术。
但是,正则表达式没有任何意义。不讨论匹配的主题字符串(但请参阅官方 Apache RewriteRule 文档中的“匹配的内容?”),正则表达式 . 应该只匹配 第一个字符 !但是,它的行为与.* 相同,即匹配整个 主题字符串。设置RewriteLogLevel 5,我得到. 和.* 的相同结果和日志条目。
我只能得出结论,带有 . 模式的 RewriteRule 是特殊情况的并且匹配整个字符串(例如 .*),而不是通过 RegExp 引擎按原样处理。但是,我还没有在任何地方看到这个记录。是文档不足,还是我完全遗漏了什么?
谢谢!
【问题讨论】:
标签: apache wordpress .htaccess mod-rewrite