Apache 的rewrite规则
在网站目录下放置 .htaccess文件,内容为:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
其中:
第一行RewriteCond % !-d表示针对于不是文件夹的情况,
第二行RewriteCond % !-f表示不是文件的情况;
满足这两种情况的链接,就适用RewriteRule这条重写规则,QSA表示把参数自动附加到后面。
Nginx 的rewrite重写规则
配置方式吸取了 apache 的精华并做了一些简化。例如,nginx不需要指定QSA,因为nginx 本身就默认如此了。
nginx的重写规则就简单多了:
location / {
try_files $uri $uri/ /index.php?s=$1;
}
这规则的意思是:对于用户访问的链接地址,首先作为文件地址uri访问,如果文件不存在就作为目录uri/访问,如果还不满足就适配到/index.php?s=$1。
在这里,$1等效于$uri,所以,thinkphp在nginx 的重写规则也可以写为:
location / {
try_files $uri $uri/ /index.php?s=$uri;
}
caddy 的重写规则
caddy 的优点在于,能够自动申请ssl证书,从而使网站能启动https。
thinkphp在caddy的重写规则是:
rewrite {
to {path} {path}/ /index.php?s={uri}
}