基本上我有一个名为example.com的网站。在这个网站中,有一个WordPress-Blog,可以在“example.com/blog/”下访问。安装博客的实际目录不是“/ blog /”,而是“/ blog / de /”,因为该项目有多个不同语言的独立博客。
问题是,WordPress无法访问wp-content和wp-include文件,因为WordPress尝试通过example.com/blog/wp-content/....
所以我想让我的博客在“example.com/blog”下运行,但所有WordPress文件都应该从/ blog / de /.
加载这是我的/ blog-Location的 我是nginx的新手,所以欢迎所有可能的解决方案! location /blog {
index index.php;
try_files $uri $uri/ /de/index.php?$args;
rewrite ^(/wp-content/.*)$ /de/wp-content/$1 last;
rewrite ^/blog/(.*)+$ /blog/de/index.php?$1;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
答案 0 :(得分:0)
基本上,您需要将位置/blog
替换为路径/blog/de
。复杂的是处理PHP文件的方式,特别是当其他应用程序托管在同一个域中时。
首先在内部将/blog
重写为/blog/de
:
location /blog {
rewrite ^/blog(.*)$ /blog/de$1 last;
}
然后使用嵌套位置实现/blog/de
位置以处理PHP:
set $wordpress /blog/de/index.php;
location ^~ /blog/de {
# root inherited from server container???
index index.php;
try_files $uri $uri/ $wordpress;
location ~ \.php$ {
try_files $uri $wordpress;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass ...;
}
}
我使/blog/de
成为优先级前缀位置,以避免与任何其他php位置发生冲突。但如果这是此服务器块中的唯一应用程序,则不需要这样做。