Rob*_*bin 0 php apache .htaccess
我正在寻求帮助,了解特定.htaccess文件的工作原理.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)
到目前为止,我认为这是我所理解的:
第1行:允许Apache根据某些规则更改网址?
第2,3行:关于不访问文件和目录的东西.但是我的浏览器访问没有问题 http://localhost/dev/can_i/yes_i_can.php,所以我认为我没有正确理解.
第4行:我得到的^(.*)$是一个正则表达式"开始和结束任何事物"但这究竟是指什么?整个网址?然后它被index.php替换为附加的表达式.那么为什么我们不能得到类似的东西localhost/index.php?url=localhost/index.php/whatever_came_after呢?最后[L,QSA]做了什么?我知道QSA的意思是"查询字符串附加"但不确定它是如何工作的.
任何帮助非常感谢.
这样可以启用apache mod_rewrite
RewriteEngine on
Run Code Online (Sandbox Code Playgroud)
这两行意味着如果浏览器中具有指定名称的文件不存在,或者浏览器中的目录不存在,则进入下面的重写规则
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
Run Code Online (Sandbox Code Playgroud)
RewriteCond基本上意味着"只有在这是真的时才执行下一个RewriteRule".该!-l路径是该请求不是一个链接的条件(!表示不,-l意味着链接)
RewriteRule基本上意味着如果请求完成匹配^(.+)$(匹配除服务器根之外的任何URL),它将被重写为index.php?url = $ 1这意味着将ollewill的请求重写为index.php?url = olle .
QSA意味着如果有一个与原始URL一起传递的查询字符串,它将被附加到重写(olle?p = 1将被重写为index.php?url=olle&p=1.
L表示如果规则匹配,则不再处理此规则以下的RewriteRules.
有关此更完整的信息,请点击上面的链接.重写支持可能有点难以掌握,但是有很多关于stackoverflow的例子可供学习.
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |