worepress 在nginx服务器下对地址进行重写
在apach服务器下,对地址重写是很简单的。
1. 首先要找到apache的配置文件httpd.conf(文件在conf目录下)
2. 你首先必须得让服务器支持mod_rewrite,如果你使用的是虚拟主机,请事先询问你的主机提供商。
打开httpd.conf,找到
#LoadModule rewrite_module modules/mod_rewrite.so
把#去掉
找到AllowOverride None 改成 AllowOverride All,
注:AllowOverride 的参数设置为ALL,表示整台服务器上都支持URL规则重写。Apache 服务器要读每个网站下目录下的 .htaccess 文件。如果没有这个文件,或者这个文档没有定义任何关于URL重写的规则就不会有任何效果。
3. 重启apache服务器,先按stop再start。
4. 在你需要URL重写的网站目录下放一个.htaccess文件,文件名是.htaccess,Windiws下不能直接建立,你可以用记事本另存为。
注:我测试的时候在每个需要伪静态的目录下都存放了对应的.htaccess文件,同时在httpd.conf文件中像第二步那样对相关的目录添加了相应的<Directory>..</Directory>代码。
5. 在.htaccess中通过正则表达式映射需要伪静态的页面。
URL正则表达式如下:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /wordpress/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ./index.php [L] </IfModule> # END WordPress
其中的RewriteBase,表示当前你的wordpress 在根目录下的wordress文件夹下。如果不是 则直接改为
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
自此,apache的URL重写配置完成。
但是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; }
我的是这样的
server{ listen 80; server_name blog.shiniv.com; index index.html index.htm index.php; root /htdocs/shiniv.com/blog.shiniv.com; 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; } include location.conf; }
【声明】本文 worepress 在nginx服务器下对地址进行重写 为柠之漠然原创文章,转载请注明出自
枫之落叶
并保留本文有效链接:https://blog.shiniv.com/2013/07/worepress-nginx-url-rewrite/ , 转载请保留本声明!