共计 1737 个字符,预计需要花费 5 分钟才能阅读完成。
当初有局部用户在建站的时候,根目录下曾经运行了一份程序代码,并且设置了伪动态。为了减少网站的收录量,还会给网站减少站内站的性能。个别没有开发能力的用户,会抉择在一级目录下再依照一个 WordPress 来作为站内站发一些不太紧要的文章。这里说说如何给装置在一级目录下的 WordPress 程序设置 nginx 伪动态规定问题。如果伪动态设置不当的话,会导致网站不能失常关上。要么就是影响到了原来的网站,导致原来网站内页打不开,要么就是影响到了 WordPress 站点,导致站内站内页打不开,或者设置不当导致内页能关上了,后盾却有打不开了的状况。
这里的配置办法适宜应用 nginx 作为服务器环境的用户配置,如果你应用的宝塔面板,那么配置起来将更不便。上面以应用宝塔面板来阐明一级目录下装置 WordPress 的 nginx 伪动态规定配置办法。没有应用宝塔面板,间接配置 nginx.conf 也是一样的配置内容,只是操作方法略有不同,须要手动关上 nginx.conf,并在批改结束后,手动重启或重载 nginx。
WordPress 原来的伪动态规定
location /
{try_files $uri $uri/ /index.php?$args;}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
下面是 WordPress 装置在根目录下的 nginx 伪动态配置,然而,如果间接将它当做装置在一级目录下的 WordPress 应用的话,它是不行的。咱们当初假如曾经装置在根目录下的伪动态是:
location /
{try_files $uri $uri/ /index.php?$args;}
失常状况下,咱们给源站减少一个站内站,是不能影响网站的失常拜访的,要不然,这么减少就没有意义了。
当初假如咱们的 WordPress 装置的一级目录为 blog,并且曾经装置结束,那么,咱们当初来开始给它配置新的伪动态规定。
一级目录下的 WordPress 伪动态规定:
location /blog {
set $need 0;
if (!-f $request_filename){set $need 1;}
if ($request_uri ~* admin){set $need 0;}
if ($need = 1) {rewrite (.*) /blog/index.php;
}
rewrite /blog/wp-admin$ $scheme://$host$uri/ permanent;
}
为什么要这么写呢?因为如果咱们这里再应用 try_files $uri $uri/ /index.php?$args;
,它就会让装置在根目录下的站点无奈失常拜访。而如果咱们间接应用 if (!-f $request_filename){rewrite (.*) /index.php; }
,则又会导致装置的一级目录下的后盾无奈失常拜访,因为后盾wp-admin
是一个实在存在的目录,是不须要伪动态规定的。因而这里咱们引入了 $need 变量,先判断文件是否存在,如果不存在,咱们先标记为 $need = 1,再判断门路是不是 wp-admin,如果是,则 $need = 0,保障 rewrite (.*) /blog/index.php;
伪动态不会影响到后盾,否则就半途而废了。
最初,咱们再判断 $need 是否是 1,是的话,就执行rewrite (.*) /blog/index.php;
,这样既保证了装置在根目录的源站能够失常拜访,同时也保障了装置在一级目录下的 WordPress 站点能够失常拜访,WordPress 后盾也不出错。
然而
一级目录下的 WordPress 另一种伪动态规定
location /blog {
try_files $uri $uri/ /blog/index.php?$args;
rewrite /blog/wp-admin$ $scheme://$host$uri/ permanent;
}
这样写也是正确的。下面两个伪动态规定,都通过了理论测试。如果你也遇到了将 WordPress 装置在一级目录而网站不能失常拜访的话,能够应用下面的伪动态规定。
留神:如果你发现源站无奈失常拜访内页了,肯定是因为源站的伪动态规定被你删掉了。请复原它。这里新增的一级目录伪动态规定限定了目录作用域,不会影响到源站自身的。