首页 > 解决方案 > wordpress wp-admin 重定向到根目录和纯域

问题描述

主要问题

wordpressexample.com/en/wp-admin/重定向到example.com/wp-admin/并且/en/缺少前缀。

描述

你好。我有一个主服务器在example.com。我想在单独的服务器上提供 wordpress 站点,example.com/en 但 wordpress 位于单独的服务器上。第二个服务器地址是en.example.com

所以我在第二个服务器中使用docker创建了一个wordpress站点,使用我最后记下的docker-compose文件并将主服务器nginx设置为proxy_pass到en.example.com

server {
    server_name  example.com;
    ...
    location ^~ /en/ {
        include proxy_params;
        proxy_pass https://en.example.com/;
    }
    ...
}

并在第二台服务器中为 nginx 使用了这个配置:

server {
    server_name  en.example.com;
    location / {
        include proxy_params;
        proxy_pass http://127.0.0.1:4080; # server port 4080 is maped to container port 80
    }
}

在这样做之后,由于在子目录中安装了 wordpress,我遇到了禁止的错误。所以我将容器配置文件中运行的 apache2 从“/var/www/html”更改为“/var/www/html/en”,以查找 http 和 https 的 index.php。

还更改.htaccess为允许以我在下面写的方式访问 wordpress。.htaccess(在第 3 行和第 7 行添加en/):

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /en/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /en/index.php [L]
</IfModule>
# END WordPress

完成这些之后,我可以安装 wordpress 并从中访问它example.com/en/,所有链接都很好,并且可以正确使用 example.com/en/。但是有一个大问题。

主要问题

每当我想访问管理页面时,它都会重定向到根域并忽略子目录。这意味着example.com/en/wp-admin/重定向到example.com/wp-admin/并且/en/错过了前缀。我很感激任何帮助。

..................................................... ..................................................... ..................................................... ......................

docker-compose.yml文件,其中包含正确的WP_HOMEWP_SITEURL以及我在互联网上找到的其他一些额外配置:

version: '3'


services:
  db:
    image: mysql:8.0
    container_name: en_db
    restart: unless-stopped
    env_file: .env
    environment:
      - MYSQL_DATABASE=enwordpress
    volumes:
      - en_db:/var/lib/mysql
    command: '--default-authentication-plugin=mysql_native_password'
    networks:
      - en_network

  wordpress:
    depends_on:
      - db
    image: wordpress:5.5-apache
    container_name: en_wordpress
    restart: unless-stopped
    env_file: .env
    ports:
      - 4080:80
    environment:
      - WORDPRESS_DB_HOST=db:3306
      - WORDPRESS_DB_USER=$MYSQL_USER
      - WORDPRESS_DB_PASSWORD=$MYSQL_PASSWORD
      - WORDPRESS_DB_NAME=enwordpress
      - WORDPRESS_CONFIG_EXTRA=
          define('WP_SITEURL','https://example.com/en/');
          define('WP_HOME','https://example.com/en/');
          define('WP_DEBUG', true );
          define('RELOCATE', true );
    working_dir: /var/www/html/en/
    volumes:
      - en_wordpress:/var/www/html/en
    networks:
      - en_network

volumes:
  en_wordpress:
  en_db:

networks:
  en_network:
    driver: bridge
 

标签: phpwordpressdockerapachenginx

解决方案


推荐阅读