【问题标题】:Multisite Wordpress, SSL and htaccess to use the subfolder as a root多站点 Wordpress、SSL 和 htaccess 以使用子文件夹作为根
【发布时间】:2019-04-26 16:49:48
【问题描述】:

我有一个 SSL 证书,所以 http -> https 是必须的(作为预防措施)。我打算拥有多个子域,即 subdomain1.example.com、subdomain2.example.com,目前有一个子域可以正常工作。我正在使用多站点 Wordpress 设置,它(故意)安装在一个子文件夹中。多站点设置适用于其他语言。当前服务器文件夹布局如下:

  • public_html
    • 后台
      • subdomain1(子域的文件夹)
    • 前台
      • wp-管理员
      • wp 内容
      • wp 包含
      • (其余的 WP 文件)
    • index.php(一个测试文件,如果重定向设置正确,则不应加载)

目前,www.example.com/frontstage/ 打开了主要的 WP 站点,这很好。我可以毫无问题地访问它的 wp-admin。 www.example.com/frontstage/en/ 显示 404 页面,这不好。 www.example.com/frontstage/en/wp-admin/ 为其他站点打开仪表板。

我想保留从任何链接中删除 index.php(以保持链接干净)。

有两个“简单”的东西可以正确配置:

  1. 我想保留服务器文件夹结构,但跳过“frontstage”文件夹,这样当您访问 www.example.com 时,主 WP 站点会加载(如果有人会加载 www.example.com)。 example.com/frontstage/ 它将重定向到 www.example.com)。自然地,“转变”需要允许 www.example.com/en/ 打开辅助网站(可能跟随的任何其他语言网站)。理想情况下,无需重写 WP 网站内的所有链接。
  2. 目前 /en/ 站点不加载其根目录。演示帖子和页面加载正常。

我当前在根级别的 .htaccess 如下所示:

# disable index.php from urls

RewriteEngine On
RewriteBase /

<IfModule mod_rewrite.c>
    # redirect index.php requests
    RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
    RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

# force https and www

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

# move wordpress one level up

# allow subdomain

RewriteRule ^backstage\/subdomain1\/?(.*)$ "https\:\/\/subdomain1\.example\.com\/$1" [R=301,L]

对此的任何帮助都非常感谢(我仍在学习 htaccess 的位和技巧,而这真的超出了我的能力范围)。我在上面的代码中遗漏了什么来使它正确?

【问题讨论】:

    标签: php wordpress .htaccess ssl multisite


    【解决方案1】:

    当我在子文件夹中安装了 WP 后,我只需转到设置 => 常规并通过删除子文件夹来更改网站 URL。

    之后,我将文件 index.php 向上移动一个文件夹,在您的情况下,将其更改为:

     require( dirname( __FILE__ ) . '/frontstage/wp-blog-header.php' );
    

    这能解决您的问题吗?

    在本站查看如何将 WP 移至子目录的详细说明 - 您可以在以下网站https://codex.wordpress.org/Giving_WordPress_Its_Own_Directory 上找到有关将 Wordpress 移至子目录的详细说明

    关于从 http 到 https 的重定向 - 这在 .htaccess 中是可能的。在我看来,最好是 apache 上的别名(这通常应该由您的主机完成)。

    区别:

    htaccess 重定向会返回给用户,然后再返回给服务器,这会花费一些时间。别名 - 据我所知 - 在服务器上重定向。

    如果你想强制 https,你可以通过以下条目来实现。

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{SERVER_PORT} !^443
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    </IfModule>
    

    【讨论】:

    • 尝试使用您描述的过程,我得到一个空白的起始页,错误“无法建立数据库连接” - 类似这些行的东西,用黑色大字体写成(由 WP 生成,不是由服务器)。关于 https,出于预防措施,我将其留在了 htaccess 中,以防 SSL 有效性结束(我想我很快就会转移到另一台服务器,无法立即传输 SSL)。
    • 当前语句不只是检查它是否不是https,它将转发到与https相同的链接,但如果是https(可能由主机正确配置,我得到https链接即使没有 htaccess 中的那段代码)它只是跳过任何关于这个问题的操作?
    • 您是否将 htaccess 重置为原始的?
    • 如果您的意思是 WPs htaccess,它从一开始就没有受到影响,我只对根的 htaccess 进行了更改(我的自定义 htaccess,文件夹中的所有内容即使没有它也能正常工作)
    • 我会删除任何 htaccess。
    猜你喜欢
    • 2018-02-10
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 2012-05-09
    相关资源
    最近更新 更多