我成功地在NginX上部署了我的wordpress网站。 我需要永久链接http://www.example.com/%postname%和博客http://blog.example.com/%postname% 。 它将所有wwwstream量redirect到非www,但是当我尝试通过取消注释下面所写的NginX的mydomainconfiguration文件中的行来将非wwwredirect到www时,浏览器会抱怨redirect循环。
我的全球/ restrictions.conf是:
http://pastebin.com/cLfMv6jC
而global / wordpress.conf是:
http://pastebin.com/Uc9KSqhh
和NginX的服务器块的mydomainconfiguration文件是:
server { server_name _; return 301 $scheme://www.example.com$request_uri; } #server { # listen 80; # server_name example.com; # return 301 $scheme://www.example.com$request_uri; #} server { listen 80 default_server; listen [::]:80; root /usr/share/nginx/html/example.com; index index.php index.html index.htm; server_name www.example.com; include global/restrictions.conf; include global/wordpress.conf; }
请指出我的错误。
[更新]事实上,我也有以下服务器块:
server { listen 80; listen [::]:80; root /usr/share/nginx/html/mydomain_test; index index.php index.html index.htm; server_name test.example.com; include global/restrictions.conf; include global/wordpress.conf; }
我很困惑,为什么你使用server_name _ 。 这用于指定一个默认的服务器,但然后您将server_name www.mydomain.com节作为默认( listen 80 default_server默认服务器)。
我会这样重写你的configuration:
server { listen 80; listen [::]:80; server_name www.mydomain.com; root /usr/share/nginx/html/mydomain.com; index index.php index.html index.htm; include global/restrictions.conf; include global/wordpress.conf; } server { listen 80 default_server; server_name mydomain.com; return 301 $scheme://www.mydomain.com$request_uri; }
如果上面的修改不起作用,我会专注于你的包含。 通过创build一个简单的/usr/share/nginx/html/mydomain.com/test.html并修改第一节来隔离它们:
server { listen 80; listen [::]:80; server_name www.mydomain.com; root /usr/share/nginx/html/mydomain.com; index test.html }
然后,通过访问www.mydomain.com和domain.comtesting,看看是否都指向你创build的test.html 。 如果他们这样做,那么深入挖掘这些包括。
你的WordPress的安装也能够redirect访客到它认为是正确的url。 它通过使用php header()函数指定Location:头来完成。 所以你可能会看到你的网站redirect到你告诉nginx去的地方,然后wordpress把它发回去。
在您的wp_options表中,将名为“siteurl”和“home”的选项设置为www.domain.com uri。