【问题标题】:Wordpress 302 Temporary redirect via htaccessWordpress 302 通过 htaccess 临时重定向
【发布时间】:2021-12-25 14:11:52
【问题描述】:

我需要临时移动我的站点目录,以便可以在域根目录中放入登录页面。登录页面将位于子域并指向根域(通过 DNS)。

我正在尝试通过 htaccess 进行简单的 302 重定向,以将站点目录从 https://example.com/ 更改为 https://example.com/home/,但我陷入了循环。 当我加载网站时,我会永远得到这个......

https://example.com/home/home/home/home/home/home/

任何想法如何让它工作?

Redirect 302 / https://example.com/home/


# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

【问题讨论】:

  • 您似乎没有移动“您网站的目录”,您只是将主页移动到一个新的 URL - 对吗?但是,如果您重定向主页,您将如何“放入登录页面”?大概你会在那个时候删除重定向?
  • “通过 DNS”到底是什么意思?您是否为此使用了第二个域(或子域)??
  • 是的,不要移动网站 - 只需要更改 url。我们通过指向 example.com 的子域/dns 进入登录页面,所以现在我们需要 wordpress 站点出现在 example.com/home
  • 只是好奇,如果您在替代主机名上实现登录页面,那么为什么需要重定向现有主页?它们是不同的 URL。
  • 当前站点存在于 example.com - 我们需要新的登录页面存在于 example.com - 所以必须移动一些东西......

标签: .htaccess redirect http-status-code-302


【解决方案1】:

mod_alias Redirect 指令是前缀匹配的,匹配后的所有内容都被复制到目标 URL 的末尾。因此,相同的指令会将/home/(匹配/)重定向到/home/home/home/ 附加在目标上)等等。

由于您已经在 WordPress 代码块中使用了 mod_rewrite,因此您也应该在此处使用 mod_rewrite 以避免潜在的冲突。无论.htaccess 中指令的顺序如何,mod_rewrite 总是在 mod_alias 之前执行。

例如,仅将根目录重定向到 302,然后改用以下内容:

RewriteRule ^$ /home/ [R,L]

显然,当您在根目录中实现替代着陆页时,需要删除此重定向。

登录页面将位于子域并指向根域(通过 DNS)。

但是,如果您通过“子域”(如 cmets 中的建议)实现此“登录页面”,那么我不确定您为什么需要移动现有主页,因为它存在于不同的主机名。 (?)

但是在子域(可能指向主域文档根目录)上实施新的登录页面将创建一个非常脱节的站点。子域和主域是两个不同的站点。

如果您想在 WordPress 之外(在同一个域上)创建一个新的登录页面(替换旧主页),那么我看不出如何实现从旧主页到 /home/ 的“重定向”因为这自然会重定向新的着陆页 - 除非这只是您所说的“临时”,直到实施新的着陆页?

据我所知,您需要:

  1. 使用主页的现有内容为/home/ 创建一个新的 WP 页面。 (现有的 WP 主页将无法访问。)

  2. 在一个单独的子目录(在 URL 中不可见)中创建您的新着陆页 - 如果这是一个相对简单的页面,也可以只是一个单独的文件(例如 /new-landing-page.php)。

  3. 在内部将来自文档根目录(否则会显示 WP 主页)的请求重写到新登录页面,并防止请求通过 WordPress 路由。

    例如:

    # Rewrite requests for the homepage to the new landing page.
    RewriteRule ^$ new-site/new-landing-page.php [L]
    

    example.com/ 被请求时,example.com/new-site/new-landing-page.php 被提供(无重定向)。 WP被绕过。但是/&lt;something&gt; 是通过 WP 以通常的方式路由的。

【讨论】:

  • 任何添加类似内容的尝试都会导致错误页面... ERR_TOO_MANY_REDIRECTS
  • 您现在看到的重定向循环是什么?想必您已经在 WordPress 中更改了主页 URL?
  • WordPress 地址 (URL) 或站点地址 (URL) ?
  • 也没有,您不会移动整个网站 - 只是主页。您实际上需要创建一个看起来与您现有主页相同的新路由/home/。然后,您可以在根目录中实现一个新的登录页面(WordPress 之外),并在内部将来自根目录的请求重写到新的登录页面。没有 DNS/子域。但是,一旦您实施了新的登陆页面,您就无法将根重定向到/home/,因为您自然会重定向新的登陆页面。
  • @lowercase 我已经更新了我的答案。 (但是你看到了什么重定向?)
猜你喜欢
  • 2013-01-05
  • 1970-01-01
  • 2011-03-27
  • 2010-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多