Apache、Nginx和Caddy的伪静态重写规则

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}
    }
# web服务器  

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×