出于对志文工作室站内结构和内容的重构考虑,修改了一些栏目及目录结构,但是这样就使得已有文章的 URL 发生变化,那么如何在修改之后,让文章的原 URL 依然可以正确访问呢?
经过多次的查找学习与尝试,在此列举相关解决方法以供备忘与参考。
在此之前,志文工作室使用的方法是 nginx 下的 wordpress 简洁 URL rewrite 重写方法,代码如下:
location / { try_files $uri $uri/ /index.php?q=$uri&$args; }
添加了一条 rewrite 规则如下,希望使得旧的 url 依然可以访问,但是尝试此法不可行。
location / { rewrite ^/Category(.*)/(.*)\.html$ /a/$2.html last; try_files $uri $uri/ /index.php?q=$uri&$args; }
正确的做法:
后想起曾经配置过某站点的 phpinfo,而 wordpress 通过 phoinfo 方式可以用 index.php/XXX 的方式访问。于是增加了相关配置代码如下示例。
nginx 实现 phpinfo 支持:
location ~ \.php(.*)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; #include fastcgi_params; include fcgi.conf; }
新的 rewrite 规则:
location / { rewrite ^/Category(.*)/(.*)\.html$ /index.php/a/$2.html last; try_files $uri $uri/ /index.php?q=$uri&$args; }
如此之后即可正确的访问了。