shi*_*hin 4 .htaccess mod-rewrite
有人可以解释以下这行吗?
RewriteRule ^(.*)$ /index.php/$1 [L]
Run Code Online (Sandbox Code Playgroud)
重写规则的各个部分细分如下:
RewriteRule
表示此行将是重写规则,而不是重写条件或其他重写引擎指令之一
^(.*)$
匹配(.*)
从开始^
到$
请求结尾的所有字符
/index.php/$1
将重写请求,(.*)
并替换上一个示例中匹配的数据$1
.
[L]
这告诉mod_rewrite如果步骤2中的模式匹配,则将此规则应用为"Last"规则,并且不再适用.
该mod_rewrite的文件确实是全面的,但无可否认很多涉水通过解码这样一个简单的例子.
最终结果是所有请求都将被路由index.php
,这是PHP的许多模型 - 视图 - 控制器实现中看到的模式. index.php
可以检查请求的URL段(可能是请求是通过GET还是POST)并使用此信息动态调用某个脚本,而该脚本的位置不必与请求URI隐含的目录结构相匹配.
例如,/users/john/files/index
可以index('john')
在名为user_files.php
存储在scripts目录中的文件中调用该函数.如果没有mod_rewrite,更传统的URL可能会使用可读性较低的查询字符串并直接调用该文件:/user_files.php?action=index&user=john
.