程序员 php Python apache 微软 shell wordpress Firefox linux命令 Android nginx centos Windows java 开源 mysql HTML5 google linux Ubuntu

wordpress伪静态Nginx/Apache/IIS Rewrite规则

本文介绍在Nginx、apache、iis下通过编写Rewrite规则使wordpress url静态化,wordpress固定链接是你个人博客里的文章、分类以及其他页面的固定链接地址。通过固定链接,别的博友可以链到你写的博客,你也可以将这个链接地址写在邮件里发给其他人看。如果博客的链接地址变来变去,会造成其他人通过之前的链接地址来浏览博客时出错,所以每篇博客的链接地址都应该固定,而且永久不改。

nginx独立主机写法:

location / {
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.PHP){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}

Apache 虚拟主机,.htaccess文件如下:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} ^wp-content.*
RewriteCond %{REQUEST_FILENAME} ^wp-admin.*
RewriteCond %{REQUEST_FILENAME} ^wp-include.*
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

IIS Web Server
固定链接通常需要mod_rewrite,但是IIS(Windows servers)不支持mod_rewrite。(如果在Windows上使用Apache 2.0.54,mod_rewrite可以正常工作,需要在apache\conf\httpd.conf打开这个模块。) 如果使用IIS 7且有服务器的管理权限,可以使用Microsoft的URL Rewrite模块。虽然和mod_rewrite不是完全兼容,但是支持WordPress的固定链接。安装后打开WordPress文件夹下的web.config,添加下面的规则到 system.webServer节点。

<rewrite>
    <rules>
        <rule name="Main Rule" stopProcessing="true">
            <match url=".*" />
            <conditions logicalGrouping="MatchAll">
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            </conditions>
            <action type="Rewrite" url="index.php/{R:0}" />
        </rule>
    </rules>
</rewrite>

延伸阅读

评论