【问题标题】:.htaccess correct way to redirect from one Wordpress instance to another?.htaccess 从一个 Wordpress 实例重定向到另一个的正确方法?
【发布时间】:2022-01-10 14:30:30
【问题描述】:

首先,如果有类似的线程,我很抱歉,但我无法弄清楚以下问题的正确方法是什么:

我不知道如何正确更改我的 .htaccess 文件,以便以下条件起作用:

我在一个域下有 2 个独立的 WordPress 实例。 (比方说:example.com)

  • 旧实例托管在此处:example.com/old/
  • 新实例托管在此处:example.com/new/

我访问 example.com 时的当前行为:

  • 当我访问 example.com 时,它会重定向到旧实例。 浏览器显示:example.com/old

访问 example.com 时的期望行为:

  • 它重定向到 example.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 / (根)

# -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>

非常感谢任何帮助。

谢谢。

【问题讨论】:

    标签: wordpress apache .htaccess redirect mod-rewrite


    【解决方案1】:

    您需要在 old/. htaccess 中使用 RewriteRule 而不是使用 Redirect 。 RewriteRule 可以将请求从您的 old 目录映射到 new 目录,而无需更改 URL。

    RewriteEngine On
    
    RewriteCond %{REQUEST_URI} !/new [NC]
    RewriteRule ^(.*)$ /new/$1 [L]
    

    这应该放在/root 目录中的 htaccess 中,并记住将其放在顶部或其他重写指令之前。

    还可以通过转到 WordPress 仪表板中的 settings-&gt;general 来更改“WordPress 主页 URL”和“站点地址”。 您可以使用 https://example.com 作为 WordPress 主页 URL,并使用 https://example.com/new 作为您的 WordPress 网站地址。

    让我知道它是如何为你工作的。

    【讨论】:

    • 谢谢。我可以用你的最后一段来解决这个问题。我还必须用 /new/ 中的 Wordpress 特定 index.php 覆盖 root 中的 index.php,然后创建一个通用的 .htaccess 文件。
    猜你喜欢
    • 2015-07-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 2013-10-05
    • 2020-05-04
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    相关资源
    最近更新 更多