htaccess中的RewriteRule

shi*_*hin 4 .htaccess mod-rewrite

有人可以解释以下这行吗?

RewriteRule ^(.*)$ /index.php/$1 [L]
Run Code Online (Sandbox Code Playgroud)

mea*_*gar 7

重写规则的各个部分细分如下:

  1. RewriteRule
    表示此行将是重写规则,而不是重写条件或其他重写引擎指令之一

  2. ^(.*)$
    匹配(.*)从开始^$请求结尾的所有字符

  3. /index.php/$1
    将重写请求,(.*)并替换上一个示例中匹配的数据$1.

  4. [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.