我有一个SSL证书,因此http-> https是必须的(作为预防措施)。我打算有多个子域,即subdomain1.example.com,subdomain2.example.com,目前有一个可以正常工作的子域。我使用的是多站点Wordpress安装程序,该安装程序(有目的地)安装在一个子文件夹中。多站点设置适用于其他语言。当前服务器文件夹的布局如下:
当前,www.example.com / frontstage /可以打开WP主站点,这很好。我可以毫无问题地访问其wp-admin。 www.example.com/frontstage/en/会显示404页面,这不好。 www.example.com/frontstage/zh-CN/wp-admin/打开其他站点的仪表板。
我要保留从任何链接中删除index.php的功能(以保持链接的清洁)。
要配置两个“简单”的东西:
我当前在根目录下的.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的位和窍门,而这真的超出了我)。我在上面的代码中缺少什么才能正确处理?
答案 0 :(得分:0)
当我在子文件夹中安装了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>