rug*_*ert 4 php wordpress nginx url-rewriting vvv-wordpress
我正在使用 Composer 构建自动 WordPress 部署,并将 wp-content 文件夹保留在主 WP 安装之外(因为我有一些自定义插件和主题),该文件夹是从 github 中提取的。
从 github 拉取并运行 Composer 后,我的文件夹结构如下所示:
-composer.php
-env.php
-public/
|-index.php
|-wp-config.php
|-wp-content/
|-themes/
|-plugins/
|-sunrise.php
|-wp/
|wordpress stuff
Run Code Online (Sandbox Code Playgroud)
我的 htaccess 规则在使用 MAMP 时运行良好,但我使用 VVV 作为我的开发环境,而 VVV 使用 nginx,因此我的重写规则不起作用。
VVV 使用 2 个conf 文件:一个文件由虚拟机上的所有站点共享(通用规则),另一个文件用于每个站点(基本上仅列出根目录)。
这是我的站点特定的conf文件:
server {
listen 80;
listen 443 ssl;
server_name auto.dev ~^auto\.\d+\.\d+\.\d+\.\d+\.xip\.io$;
root /srv/www/auto/htdocs/wordpress;
# my rules
# tells nginx to prepend "wp" to things
rewrite ^/(wp-.*.php)$ /wp/$1 last;
rewrite ^/(wp-(content|admin|includes).*) /wp/$1 last;
# end WP dir rules
include /etc/nginx/nginx-wp-common.conf;
}
Run Code Online (Sandbox Code Playgroud)
所以我添加了
rewrite ^/(wp-.*.php)$ /wp/$1 last;
rewrite ^/(wp-(content|admin|includes).*) /wp/$1 last;
Run Code Online (Sandbox Code Playgroud)
这种方法可行(我能够获取管理区域,并且管理区域拥有所有 CSS 和 JS),但我面临 3 个大问题:
1)网站的前端不再有CSS。Chrome 的控制台在我的 index.php 的第二行显示错误:
Uncaught SyntaxError: Unexpected token <
Run Code Online (Sandbox Code Playgroud)
注意 - 看起来有些主题有效,具有“二十十五”主题的网站看起来有效。
2)我无法访问多站点网络区域,无论出于何种原因,每当我尝试访问时,http://auto.dev/wp-admin/network/
我的请求都会被重写为:http://http//auto.dev/wp-admin/network/
因此显然不起作用
3)最后我无法登录我的子网站。像这样的东西http://auto.dev/wiki/wp-admin/
给了我一个重定向循环
4)我刚刚注意到,当我尝试更改网站的主题时,主题预览被破坏。
只是一些注意事项:
您的wp-content/
文件夹不在wp/
您此处所述的文件夹下:
rewrite ^/(wp-(content|admin|includes).*) /wp/$1 last;
Run Code Online (Sandbox Code Playgroud)
由于默认主题(例如“二十十五” )随文件夹一起提供/wp/wp-content/
,因此它可以解释为什么您要让它在那里工作。
关于/wp/
网络管理 URL 中缺失的部分,Daniel Bachhuber发布了这个方便的要点片段来解决该问题。它使用network_site_url
过滤器来注入它。
<?php
/**
* Fix network admin URL to include the "/wp/" base
*
* @see https://core.trac.wordpress.org/ticket/23221
*/
add_filter( 'network_site_url', function( $url, $path, $scheme ){
$urls_to_fix = array(
'/wp-admin/network/',
'/wp-login.php',
'/wp-activate.php',
'/wp-signup.php',
);
foreach( $urls_to_fix as $maybe_fix_url ) {
$fixed_wp_url = '/wp' . $maybe_fix_url;
if ( false !== stripos( $url, $maybe_fix_url )
&& false === stripos( $url, $fixed_wp_url ) ) {
$url = str_replace( $maybe_fix_url, $fixed_wp_url, $url );
}
}
return $url;
}, 10, 3 );
Run Code Online (Sandbox Code Playgroud)
另请参阅具有根站点地址的子目录中多站点上的开放票证#23221
GitHub 上有一些关于 nginx + 具有 wp 骨架结构的多站点的讨论(我前段时间在那里发布了一些实验)。
归档时间: |
|
查看次数: |
859 次 |
最近记录: |