我有一个 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(以保持链接干净)。
有两个“简单”的东西可以正确配置:
- 我想保留服务器文件夹结构,但跳过“frontstage”文件夹,这样当您访问 www.example.com 时,会加载主 WP 站点(如果有人会加载 www.example.com)。 example.com/frontstage/它将重定向到 www.example.com)。自然地,“转移”需要允许 www.example.com/en/打开二级网站(可能跟随的任何其他语言网站)。理想情况下无需重写 WP 站点内的所有链接。
- 目前/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/