首页 > 解决方案 > Wordpress 302 通过 htaccess 临时重定向

问题描述

我需要临时移动我的站点目录,以便可以在域根目录中放入登录页面。登录页面将位于子域并指向根域(通过 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

标签: .htaccessredirecthttp-status-code-302

解决方案


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

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

例如,到 302 仅重定向根目录,然后使用以下命令:

RewriteRule ^$ /home/ [R,L]

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

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

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

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

如果您想在 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被绕过。但是/<something>以通常的方式通过 WP 路由。


推荐阅读