php - 多站点 Wordpress、SSL 和 htaccess 以将子文件夹用作根目录

标签 php wordpress .htaccess ssl multisite

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

  • public_html
    • 后台
      • subdomain1(子域的文件夹)
    • 前台
      • wp管理员
      • wp-内容
      • wp-includes
      • (其余的 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 的位和技巧,这真的超出了我的范围)。我在上面的代码中缺少什么才能正确执行?

最佳答案

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

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

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

这是否解决了您的问题?

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

关于从 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>

关于php - 多站点 Wordpress、SSL 和 htaccess 以将子文件夹用作根目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53457447/

相关文章:

javascript - $http.post 到 php 文件,500 内部服务器错误

php - 使用 ajax、php 在单击时更新和隐藏动态创建的表行。创建的表是基于特定的选定值

php - WooCommerce 中的 blockOverlay 类样式覆盖

php - 如何从 WooCommerce 购物车中获取商品类别?

php - 我应该使用哪些 header 来提供静态内容?

PHP 文件输出 javascript 以包含为 JS 文件 - 需要限制,使其不会在浏览器窗口中打开

php - 进入Fk表更新记录

php - preg_replace,选择前后的点

php - 对两个不同的表进行分页

mysql - WordPress 和 BuddyPress 问题将特殊字符和拉丁字符存储到数据库和显示问题