伪静态配置

标签作用:配置程序伪静态后URL中将不再包含兼容模式的问号,整个地址更美观,也便于推广优化。

适用版本:2.X 、3.X

1、IIS7+环境(IIS6的环境自行百度):

1)安装rewrite组件,如果使用空间一般空间商默认已经安装;

2)到后台配置参数中开启伪静态开关;

3)在站点目录建立web.config文件(可到源码包rewrite目录下拷贝规则),规则内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                 <rule name="reIndex" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="true" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php?p={R:1}" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

2、Apache环境

1)开启Apache重写模块,具体请百度,如果使用空间一般空间商默认已经开启;

2)到后台配置参数中开启伪静态开关;

3)在站点目录建立.htaccess文件(可到源码包rewrite目录下拷贝规则),规则内容如下:

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f

  RewriteRule ^(.*)$ index.php?p=$1 [QSA,PT,L]
</IfModule>

3、Nginx环境

1、到后台配置参数中开启伪静态;

2、在nginx虚拟主机location配置中添加规则,规则如下:

location / {
 if (!-e $request_filename){
        rewrite ^/index.php(.*)$ /index.php?p=$1 last;
                rewrite ^(.*)$ /index.php?s=$1 last;
 }
}

注意:Nginx中如果站点部署在二级目录,请对应修改重写规则, 如:二级目录为test则:rewrite ^/test/(.*)$ /test/index.php?p=$1 last;

4、上传目录 MIME / nosniff(SVG、SVGZ、AVIF)

Apache:源码包已提供 rewrite/static-upload.htaccess,程序会通过 upload_ensure_htaccess() 自动部署为 static/upload/.htaccess(首次上传、开启伪静态、在线升级成功后会补齐)。请确认站点允许目录级 AllowOverride 且启用了 mod_mime/mod_headers

Nginx:不会读取 .htaccess,请将源码包 rewrite/static-upload.nginx.conf 中的片段并入站点配置,确保 /static/upload/ 返回正确 Content-Type 与 X-Content-Type-Options: nosniff,并禁止执行上传目录内脚本。其中 .svgz 须带 Content-Encoding: gzip(片段内已单独 location),否则浏览器会把压缩字节当 XML 解析。


返回顶部