子目录中的HTAccess、站点和转移

时间:2019-05-08 作者:modus

我有以下任务,由于它与大多数设置略有不同,我找不到任何解决问题的提示。

已将live站点的WordPress安装到子文件夹中/wp1, 这个.htaccess 指令是对www和https的重写,然后是通常的WP指令:


<IfModule mod_rewrite.c>
RewriteEngine On
# rewrite any request to the certified domain to use www
RewriteCond %{HTTP_HOST} !^www\\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# rewrite to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>


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

以及index.php 在根部加载必要的wp1/wp-blog-header.php.

现在,我需要在中设置一个临时环境/wp2 具有wp2 作为子域。子域没有SSL证书(但我可以很容易地获得一个)。我尝试了几次修改,以便将子域重定向到没有https的临时站点,但到目前为止,我只得到了错误。

虽然我不太熟悉.htaccess, 我认为第一个问题是通配符重定向到www。第二个障碍是重定向到https。我需要他们两个都用于生产。

如果子域被寻址,有没有办法跳过这些规则?

或者一般来说,你会怎么做?

1 个回复
SO网友:MrWhite

假设/wp2 包含临时站点的子目录有自己的WordPress.htaccess 文件(使用标准WordPress前端控制器,见下文)。然后.htaccess 在文档中,根目录应该包含如下内容,在任何现有指令之上,将所有请求重写为wp2 子域到/wp2 子目录:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(wp2)\\.example\\.com
RewriteRule (.*) /%1/$1 [L]
然后,“标准”WordPress前端控制器将位于/wp2/.htaccess 文件(这还可以防止潜在的重写循环):

RewriteEngine On

RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
请注意,我已删除RewriteBase 指令,并删除了最后一个RewriteRule 替换。这样可以加载index.php 从…起/wp2/index.php 而不是文档根。(我真的希望主站点/wp1 待配置。)

相关推荐

迁移后永久链接不起作用-AllowOverride All、htAccess设置

我束手无策,我把一个网站迁移到了另一台服务器上,经过多次设置,我终于在它工作的地方找到了它——有点像。永久链接已损坏,并抛出无法找到站点的错误。在httpd内部。conf I设置正确的(我认为)设置:<Directory /opt/wordpress> Options Indexes FollowSymLinks MultiViews AllowOverride All </Directory> htaccess存在,可由WP写入# BEG