这个mod_rewrite代码如何正确解析?

时间:2012-06-27 15:10:09

标签: php apache .htaccess

我的.htaccess文件如下:

Options -Multiviews
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php

它有效,但我想知道它是如何工作的。例如,如果我输入example.com/main,我会在www.example.com/main.php处获取该文件。如果代码在将.php添加到www.的开头后告知重写停止,我如何获得example.com扩展名?

编辑或者我是否应该仅为了登录记住的用户而创建唯一ID?

1 个答案:

答案 0 :(得分:5)

您要问的特定行为是因为规则

RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

是301重定向;它指示浏览器发起一个全新的HTTP请求。 L仅导致(只能导致)它成为请求执行的最后一条规则;新请求带有正确的主机名,然后继续。