.htaccess 从一个 Wordpress 实例重定向到另一个实例的正确方法?
.htaccess correct way to redirect from one Wordpress instance to another?
首先,如果有类似的帖子,我很抱歉,但我无法弄清楚以下问题的正确方法是什么:
我不知道如何正确更改我的 .htaccess 文件,以便满足以下条件:
我在一个域下有 2 个独立的 WordPress 实例。 (比方说:example.com)
- 旧实例 托管于此:示例。com/old/
- 新实例 托管于此:示例。com/new/
访问时的当前行为 example.com:
- 当我访问 example.com 时,它会重定向到旧实例。
浏览器显示:example.com/old
当我访问 example.com 时所需的行为:
- 它重定向到示例。com/new/
- 从url隐藏子文件夹路径(/new),这样在地址栏中只有example.com是可见的(或除/new/之外的任何其他部分)在中间。
我的第一个方法是在 /old/.htaccess 中添加以下行:
Redirect 301 / https://example.com/new/
但随后,它将 example.com 重定向到:example.com/new/old/ 导致了 404。
由于 .htaccess 文件在 /old/ 和 /new/ 中看起来有点相同,我无法弄清楚 example.com/ 默认情况下重定向到 /old/ 的确切定义。
以下是每个实例和根文件夹的 .htaccess 内容:
.htaccess-content / (root)
# -FrontPage-
IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*
<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
.htaccess-content /old/(旧实例)
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/
RewriteRule .* - [CO=wordpress_test_cookie:WP+Cookie+check:%{HTTP_HOST}:1440:/]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /old/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /old/index.php [L]
</IfModule>
# END WordPress
.htaccess-content /new/(新实例)
#BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /new/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /new/index.php [L]
</IfModule>
# END WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Header always set Content-Security-Policy "upgrade-insecure-requests;"
</IfModule>
非常感谢任何帮助。
谢谢。
您需要在 old/. htaccess
中使用 RewriteRule
而不是 Redirect
。 RewriteRule 可以将请求从您的 old
目录映射到 new
目录而不更改 URL.
RewriteEngine On
RewriteCond %{REQUEST_URI} !/new [NC]
RewriteRule ^(.*)$ /new/ [L]
这应该放在您的 /root
目录中的 htaccess 中,并记住将其放在顶部或其他重写指令之前。
还可以通过转到 WordPress 仪表板中的 settings->general
来更改“WordPress 主页 URL”和“站点地址”。
您可以使用 https://example.com
作为 WordPress 主页 URL 和 https://example.com/new
作为您的 WordPress 站点地址。
告诉我它是如何为你工作的。
首先,如果有类似的帖子,我很抱歉,但我无法弄清楚以下问题的正确方法是什么:
我不知道如何正确更改我的 .htaccess 文件,以便满足以下条件:
我在一个域下有 2 个独立的 WordPress 实例。 (比方说:example.com)
- 旧实例 托管于此:示例。com/old/
- 新实例 托管于此:示例。com/new/
访问时的当前行为 example.com:
- 当我访问 example.com 时,它会重定向到旧实例。 浏览器显示:example.com/old
当我访问 example.com 时所需的行为:
- 它重定向到示例。com/new/
- 从url隐藏子文件夹路径(/new),这样在地址栏中只有example.com是可见的(或除/new/之外的任何其他部分)在中间。
我的第一个方法是在 /old/.htaccess 中添加以下行:
Redirect 301 / https://example.com/new/
但随后,它将 example.com 重定向到:example.com/new/old/ 导致了 404。 由于 .htaccess 文件在 /old/ 和 /new/ 中看起来有点相同,我无法弄清楚 example.com/ 默认情况下重定向到 /old/ 的确切定义。
以下是每个实例和根文件夹的 .htaccess 内容:
.htaccess-content / (root)
# -FrontPage-
IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*
<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
.htaccess-content /old/(旧实例)
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/
RewriteRule .* - [CO=wordpress_test_cookie:WP+Cookie+check:%{HTTP_HOST}:1440:/]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /old/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /old/index.php [L]
</IfModule>
# END WordPress
.htaccess-content /new/(新实例)
#BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /new/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /new/index.php [L]
</IfModule>
# END WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Header always set Content-Security-Policy "upgrade-insecure-requests;"
</IfModule>
非常感谢任何帮助。
谢谢。
您需要在 old/. htaccess
中使用 RewriteRule
而不是 Redirect
。 RewriteRule 可以将请求从您的 old
目录映射到 new
目录而不更改 URL.
RewriteEngine On
RewriteCond %{REQUEST_URI} !/new [NC]
RewriteRule ^(.*)$ /new/ [L]
这应该放在您的 /root
目录中的 htaccess 中,并记住将其放在顶部或其他重写指令之前。
还可以通过转到 WordPress 仪表板中的 settings->general
来更改“WordPress 主页 URL”和“站点地址”。
您可以使用 https://example.com
作为 WordPress 主页 URL 和 https://example.com/new
作为您的 WordPress 站点地址。
告诉我它是如何为你工作的。