当 WordPress 在子文件夹中时无法访问管理员
Can’t access admin when WordPress is in a subfolder
我使用 this Docker image. I installed WordPress in a sub-folder (https://thibault.vlacich.fr/blog).
安装了 WordPress
我正在使用 Traefik 进行路由。这是我的 docker-compose 文件:
version: '3.7'
networks:
http_network:
external: true
thibaultvlacich:
external: false
services:
database:
image: mariadb:latest
command: ['--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--default-authentication-plugin=mysql_native_password']
volumes:
- .docker/data/db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
networks:
- thibaultvlacich
wordpress:
depends_on:
- database
image: wordpress:latest
volumes:
- ./wordpress/wp-content:/var/www/html/wp-content
environment:
WORDPRESS_DB_HOST: database:3306
WORDPRESS_DB_USER: ${MYSQL_USER}
WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
labels:
- traefik.enable=true
- traefik.frontend.rule=Host:thibault.vlacich.fr;PathPrefix:/blog;PathPrefixStrip:/blog
- traefik.port=80
- traefik.docker.network=http_network
networks:
- thibaultvlacich
- http_network
除管理员外,一切正常。当我进入https://thibault.vlacich.fr/blog/wp-admin, I’m redirected to https://thibault.vlacich.fr/wp-admin,然后无法访问管理员。
知道如何解决这个问题吗? (WP_HOME 和 WP_SITEURL 都正确设置为 https://thibault.vlacich.fr/blog)
我 运行 遇到了与您完全相同的问题。我断断续续地进行了数周的故障排除,并在试图解决这个问题时失去了一半的头发。我想我终于明白了。
在 ./wordpress/wp-content 中创建一个名为 blog 的目录,并将您的所有数据移到其中。然后让你的 docker 撰写看起来像
version: '3.7'
networks:
http_network:
external: true
thibaultvlacich:
external: false
services:
database:
image: mariadb:latest
command: ['--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--default-authentication-plugin=mysql_native_password']
volumes:
- .docker/data/db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
networks:
- thibaultvlacich
wordpress:
depends_on:
- database
image: wordpress:latest
volumes:
- ./wordpress/wp-content:/var/www/html/wp-content
environment:
WORDPRESS_DB_HOST: database:3306
WORDPRESS_DB_USER: ${MYSQL_USER}
WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
labels:
- traefik.enable=true
- traefik.frontend.rule=Host:thibault.vlacich.fr;PathPrefix:/blog
- traefik.port=80
- traefik.docker.network=http_network
working_dir: /var/www/html/wp-content/blog
networks:
- thibaultvlacich
- http_network
现在它有一个奇怪的怪癖,我认为你不会有问题,因为你已经起床 运行。当您第一次配置 wordpress 站点时,您必须转到 https://thibault.vlacich.fr/blog/blog to go through the installation process. When complete you should be able to go to https://thibault.vlacich.fr/blog 并正常访问它。我遇到了同样的问题,其中 /blog/wp-admin 会重定向删除 /blog,但现在我没有。如果这不起作用,请告诉我,我会 post 我的 docker-compose.yml 文件,您可以修改您的文件以匹配。
我在 docker-compose 中找到了这个配置。
通过将所有内容都放在 /var/www/html/SUBFOLDER_NAME 中的子文件夹下
它解决了 /wp-admin.php 页面的重定向问题。
以下是 wordpress 的 docker-compose 部分,我的 SUBFOLDER_NAME 为 'blog'。
### Wordpress ###########################################
wordpress:
image: wordpress:latest
restart: always
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: root
WORDPRESS_DB_NAME: test
WORDPRESS_CONFIG_EXTRA:
|
define ( 'WP_SITEURL', 'http://localhost/blog' );
define ( 'WP_HOME', 'http://localhost/blog' );
volumes:
- ./wordpress/blog:/var/www/html/blog
depends_on:
- mysql
networks:
- frontend
- backend
working_dir: /var/www/html/blog
labels:
- traefik.enable=true
- traefik.frontend.rule=Host:localhost;PathPrefix:/blog
- traefik.port=80
嗨,我的 Traefik V2
解决方案
version: '3'
services:
db:
image: mysql:8.0
container_name: blog_db
restart: always
env_file: .env
environment:
- MYSQL_DATABASE=blog
volumes:
- dbdata:/var/lib/mysql
command: '--default-authentication-plugin=mysql_native_password'
networks:
- app-network
wordpress:
depends_on:
- db
build: .
container_name: wordpress
restart: always
environment:
WORDPRESS_DB_HOST: blog_db:3306
WORDPRESS_DB_USER: $MYSQL_USER
WORDPRESS_DB_PASSWORD: $MYSQL_PASSWORD
WORDPRESS_DB_NAME: blog
volumes:
- ./wordpress:/var/www/html/blog
networks:
- app-network
- proxy
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.routers.blog.entrypoints=websecure"
- "traefik.http.routers.blog.rule=(Host(`example.com`) && PathPrefix(`/blog{regex:$$|/.*}`))"
- "traefik.http.routers.blog.priority=10"
- "traefik.http.services.blog.loadbalancer.server.port=80"
- "traefik.http.routers.blog.tls=true"
- "traefik.http.routers.blog.tls.certresolver=cloudflare"
volumes:
dbdata:
networks:
app-network:
driver: bridge
proxy:
external: true
或者,您可以在不创建子文件夹的情况下尝试此操作。尝试在 wp-config.php
中添加以下行
$_SERVER['REQUEST_URI'] = str_replace("/wp-admin/", "/blog/wp-admin/", $_SERVER['REQUEST_URI']);
可能的解决方案:
用这个来组成:
更改 SOME_LOCAL_IN_YOUR_SERVER 服务器中的路径和 mkdir 2 文件夹(db 和 wpdata)
version: '3'
services:
db:
image: mysql:5.7
volumes:
- /SOME_LOCAL_IN_YOUR_SERVER/db:/var/lib/mysql
networks:
- wordpress
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
- /SOME_LOCAL_IN_YOUR_SERVER/wpdata:/var/www/html
networks:
- traefik-public
- wordpress
labels:
- 'traefik.enable=true'
- 'traefik.docker.network=traefik-public'
- 'traefik.http.routers.blog.rule=Host(`your.site.com`) && PathPrefix(`/blog`)'
- 'traefik.http.routers.blog.entrypoints=websecure'
volumes:
db_data:
networks:
traefik-public:
external: true
wordpress:
撰写以在 wpdata 目录中填充 wp 数据
在wpdata文件夹中输入:
cd /SOME_LOCAL_IN_YOUR_SERVER/wpdata
编辑 wp-config.php 并插入这两行:
define('WP_HOME','your.site.com/blog');
define('WP_SITEURL','your.site.com/blog');
在 wpdata 中创建博客目录:
mkdir blog
将wpdata中的所有内容复制到wpdata/blog:
cp * -R blog/
编辑 index.php(在 wpdata 目录中,不是博客目录版本)
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
must be:
require( dirname( __FILE__ ) . '/blog/wp-blog-header.php' );
基于:https://blog.sakuragawa.moe/containerized-wordpress-from-sub-directory/ and https://wordpress.org/support/article/giving-wordpress-its-own-directory/#method-ii-with-url-change
我使用 this Docker image. I installed WordPress in a sub-folder (https://thibault.vlacich.fr/blog).
安装了 WordPress我正在使用 Traefik 进行路由。这是我的 docker-compose 文件:
version: '3.7'
networks:
http_network:
external: true
thibaultvlacich:
external: false
services:
database:
image: mariadb:latest
command: ['--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--default-authentication-plugin=mysql_native_password']
volumes:
- .docker/data/db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
networks:
- thibaultvlacich
wordpress:
depends_on:
- database
image: wordpress:latest
volumes:
- ./wordpress/wp-content:/var/www/html/wp-content
environment:
WORDPRESS_DB_HOST: database:3306
WORDPRESS_DB_USER: ${MYSQL_USER}
WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
labels:
- traefik.enable=true
- traefik.frontend.rule=Host:thibault.vlacich.fr;PathPrefix:/blog;PathPrefixStrip:/blog
- traefik.port=80
- traefik.docker.network=http_network
networks:
- thibaultvlacich
- http_network
除管理员外,一切正常。当我进入https://thibault.vlacich.fr/blog/wp-admin, I’m redirected to https://thibault.vlacich.fr/wp-admin,然后无法访问管理员。
知道如何解决这个问题吗? (WP_HOME 和 WP_SITEURL 都正确设置为 https://thibault.vlacich.fr/blog)
我 运行 遇到了与您完全相同的问题。我断断续续地进行了数周的故障排除,并在试图解决这个问题时失去了一半的头发。我想我终于明白了。
在 ./wordpress/wp-content 中创建一个名为 blog 的目录,并将您的所有数据移到其中。然后让你的 docker 撰写看起来像
version: '3.7'
networks:
http_network:
external: true
thibaultvlacich:
external: false
services:
database:
image: mariadb:latest
command: ['--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--default-authentication-plugin=mysql_native_password']
volumes:
- .docker/data/db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
networks:
- thibaultvlacich
wordpress:
depends_on:
- database
image: wordpress:latest
volumes:
- ./wordpress/wp-content:/var/www/html/wp-content
environment:
WORDPRESS_DB_HOST: database:3306
WORDPRESS_DB_USER: ${MYSQL_USER}
WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
labels:
- traefik.enable=true
- traefik.frontend.rule=Host:thibault.vlacich.fr;PathPrefix:/blog
- traefik.port=80
- traefik.docker.network=http_network
working_dir: /var/www/html/wp-content/blog
networks:
- thibaultvlacich
- http_network
现在它有一个奇怪的怪癖,我认为你不会有问题,因为你已经起床 运行。当您第一次配置 wordpress 站点时,您必须转到 https://thibault.vlacich.fr/blog/blog to go through the installation process. When complete you should be able to go to https://thibault.vlacich.fr/blog 并正常访问它。我遇到了同样的问题,其中 /blog/wp-admin 会重定向删除 /blog,但现在我没有。如果这不起作用,请告诉我,我会 post 我的 docker-compose.yml 文件,您可以修改您的文件以匹配。
我在 docker-compose 中找到了这个配置。 通过将所有内容都放在 /var/www/html/SUBFOLDER_NAME 中的子文件夹下 它解决了 /wp-admin.php 页面的重定向问题。
以下是 wordpress 的 docker-compose 部分,我的 SUBFOLDER_NAME 为 'blog'。
### Wordpress ###########################################
wordpress:
image: wordpress:latest
restart: always
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: root
WORDPRESS_DB_NAME: test
WORDPRESS_CONFIG_EXTRA:
|
define ( 'WP_SITEURL', 'http://localhost/blog' );
define ( 'WP_HOME', 'http://localhost/blog' );
volumes:
- ./wordpress/blog:/var/www/html/blog
depends_on:
- mysql
networks:
- frontend
- backend
working_dir: /var/www/html/blog
labels:
- traefik.enable=true
- traefik.frontend.rule=Host:localhost;PathPrefix:/blog
- traefik.port=80
嗨,我的 Traefik V2
解决方案version: '3'
services:
db:
image: mysql:8.0
container_name: blog_db
restart: always
env_file: .env
environment:
- MYSQL_DATABASE=blog
volumes:
- dbdata:/var/lib/mysql
command: '--default-authentication-plugin=mysql_native_password'
networks:
- app-network
wordpress:
depends_on:
- db
build: .
container_name: wordpress
restart: always
environment:
WORDPRESS_DB_HOST: blog_db:3306
WORDPRESS_DB_USER: $MYSQL_USER
WORDPRESS_DB_PASSWORD: $MYSQL_PASSWORD
WORDPRESS_DB_NAME: blog
volumes:
- ./wordpress:/var/www/html/blog
networks:
- app-network
- proxy
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.routers.blog.entrypoints=websecure"
- "traefik.http.routers.blog.rule=(Host(`example.com`) && PathPrefix(`/blog{regex:$$|/.*}`))"
- "traefik.http.routers.blog.priority=10"
- "traefik.http.services.blog.loadbalancer.server.port=80"
- "traefik.http.routers.blog.tls=true"
- "traefik.http.routers.blog.tls.certresolver=cloudflare"
volumes:
dbdata:
networks:
app-network:
driver: bridge
proxy:
external: true
或者,您可以在不创建子文件夹的情况下尝试此操作。尝试在 wp-config.php
中添加以下行$_SERVER['REQUEST_URI'] = str_replace("/wp-admin/", "/blog/wp-admin/", $_SERVER['REQUEST_URI']);
可能的解决方案:
用这个来组成: 更改 SOME_LOCAL_IN_YOUR_SERVER 服务器中的路径和 mkdir 2 文件夹(db 和 wpdata)
version: '3'
services:
db:
image: mysql:5.7
volumes:
- /SOME_LOCAL_IN_YOUR_SERVER/db:/var/lib/mysql
networks:
- wordpress
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
- /SOME_LOCAL_IN_YOUR_SERVER/wpdata:/var/www/html
networks:
- traefik-public
- wordpress
labels:
- 'traefik.enable=true'
- 'traefik.docker.network=traefik-public'
- 'traefik.http.routers.blog.rule=Host(`your.site.com`) && PathPrefix(`/blog`)'
- 'traefik.http.routers.blog.entrypoints=websecure'
volumes:
db_data:
networks:
traefik-public:
external: true
wordpress:
撰写以在 wpdata 目录中填充 wp 数据
在wpdata文件夹中输入:
cd /SOME_LOCAL_IN_YOUR_SERVER/wpdata
编辑 wp-config.php 并插入这两行:
define('WP_HOME','your.site.com/blog');
define('WP_SITEURL','your.site.com/blog');
在 wpdata 中创建博客目录:
mkdir blog
将wpdata中的所有内容复制到wpdata/blog:
cp * -R blog/
编辑 index.php(在 wpdata 目录中,不是博客目录版本)
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
must be:
require( dirname( __FILE__ ) . '/blog/wp-blog-header.php' );
基于:https://blog.sakuragawa.moe/containerized-wordpress-from-sub-directory/ and https://wordpress.org/support/article/giving-wordpress-its-own-directory/#method-ii-with-url-change