在不同的 Web 服务器环境(Nginx、Apache、IIS)中,为 WordPress 网站设置伪静态规则可以提升网站的 SEO 友好性和用户体验。以下是针对这三种服务器环境的详细伪静态规则设置方法。

1. Nginx 环境下的伪静态规则


在 Nginx 中,你需要编辑网站的配置文件(通常位于/etc/nginx/sites-available/目录下),添加或修改相应的规则。以下是典型的 WordPress 伪静态规则示例:
收起
nginx
server {
    listen 80;
    server_name yourdomain.com; # 替换为你的域名
    root /path/to/your/wordpress; # 替换为你的WordPress网站根目录

    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 根据实际PHP版本调整
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

规则解释:

 
  • try_files $uri $uri/ /index.php?$query_string;:该规则尝试按顺序查找请求的文件或目录,如果都不存在,则将请求转发到index.php处理。
  • location ~ \.php$:此规则用于处理 PHP 文件的请求,将其传递给 PHP-FPM 进行处理。

2. Apache 环境下的伪静态规则


在 Apache 中,WordPress 的伪静态规则通常通过.htaccess文件来实现。首先要确保 Apache 服务器启用了mod_rewrite模块,然后在 WordPress 网站的根目录下创建或编辑.htaccess文件,添加以下规则:
收起
apache
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule. /index.php [L]
</IfModule>

规则解释:

 
  • RewriteEngine On:开启 URL 重写功能。
  • RewriteBase /:设置重写的基础路径。
  • RewriteRule ^index\.php$ - [L]:如果请求的是index.php文件,则直接处理,不进行重写。
  • RewriteCond %{REQUEST_FILENAME} !-f 和 RewriteCond %{REQUEST_FILENAME} !-d:检查请求的文件或目录是否存在,如果不存在,则执行下一条规则。
  • RewriteRule. /index.php [L]:将所有请求转发到index.php处理。

3. IIS 环境下的伪静态规则


在 IIS 中,你可以使用 URL 重写模块来实现 WordPress 的伪静态规则。首先要确保已经安装了 URL 重写模块,然后在 WordPress 网站的根目录下创建web.config文件,添加以下规则:
收起
xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WordPress Rule 1" stopProcessing="true">
                    <match url="^index\.php$" ignoreCase="false" />
                    <action type="None" />
                </rule>
                <rule name="WordPress Rule 2" stopProcessing="true">
                    <match url="." ignoreCase="false" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

规则解释:

 
  • <rule name="WordPress Rule 1">:如果请求的是index.php文件,则不进行重写,直接处理。
  • <rule name="WordPress Rule 2">:如果请求的文件或目录不存在,则将请求重写到index.php处理。

设置完相应的伪静态规则后,需要重启对应的 Web 服务器,使规则生效。这样,WordPress 网站就能正常使用伪静态 URL 了。