use*_*060 9 .htaccess mod-rewrite
我试图理解.htaccess文件中这一行的含义
RewriteRule ([a-z0-9/-]+).html $1.php [NC,L,QSA]
Run Code Online (Sandbox Code Playgroud)
$ 1.php基本上是什么?服务器中的文件
如果我们有home.html这将重定向到哪里?home.php?
Apo*_*ica 12
$1是你正则表达式中第一个被捕获的组; 即,之间的内容(和).如果你的正则表达式中有第二组括号,$2则会包含那些parens的内容.这是一个例子:
RewriteRule ([a-z0-9/-]+)-([a-z]+).html$ $1-$2.php [NC,L,QSA]
Run Code Online (Sandbox Code Playgroud)
假设用户导航到hello-there.html.他们将被送达hello-there.php.在替换字符串中,$1包含第一组parens(hello)$2的内容,同时包含第二组(there)的内容.您的替换字符串中将始终存在与"正则表达式"中有一组捕获括号一样多的"美元"值.
如果您有嵌套括号,比如(([a-z]+)-[a-z]+),$1总是以最捕获(在这种情况下,整个正则表达式),$2是第一个嵌套组,依此类推.
.htaccess文件可以包含各种各样的 Apache 配置指令,但是这个配置指令与许多配置指令一样,与 URL 重写模块mod_rewrite相关。
指令RewriteRule由3 部分组成:
在本例中,您有一个正则表达式,它匹配.html仅由字母a-z、数字0-9和组成/的任何以 结尾的内容-。然而,它还包含一组括号(...),它们标记要“捕获”的模式的一部分。
然后替换字符串可以引用这个“捕获的”值;第一个捕获是$1,第二个捕获是$2,依此类推。
在这种情况下,捕获的部分是 之前的所有内容.html,并且替换是$1.php,这意味着保留之前的任何字符串.html,但.html被丢弃并.php粘在上面。
因此,对于您的具体示例,访问home.html将像您请求的那样进行home.php。
| 归档时间: |
|
| 查看次数: |
15432 次 |
| 最近记录: |