是否在.htaccess中进行其他重定向之前重定向特定URL?

时间:2021-03-19 作者:Drewdavid

规范的网站URL将是https://www.example.com

通常任何请求,例如https://example.com 将重定向到https://www.example.com 按WordPress网站设置。

然而,我有一个团队成员关于电子邮件服务器需求的特殊要求。

Specifically 他们需要对此URL发出任何请求:https://example.com/foo 要重定向到https://foo.example.com.

为了避免出现某种奇怪的链或循环(甚至是缓慢),我正在考虑在顶部附近放置一个重定向规则。htaccess文件(即高于其他规则),以便于在发生任何其他情况之前进行此特定重定向。

a) 这是否可行,以及b)此代码是否是一种可接受的方式?

# BEGIN WordPress

RewriteEngine On

#my code
Redirect 301 /foo https://foo.example.com

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

1 个回复
SO网友:Sally CJ

a) 这是否可行,以及b)此代码是否是一种可接受的方式?

但是您应该将自定义指令Redirect 线路)above the BEGIN marker, i、 e.the# BEGIN WordPress 行,因为如果不是,则在刷新/重新生成WordPress重写规则时,自定义指令将消失。

因此:

# your code here:
Redirect 301 /foo https://foo.example.com

# BEGIN WordPress
RewriteEngine On
# ... WordPress rewrite rules here.
# END WordPress
但是如果子域位于主域的文档根目录中(example.com), 那么您应该使用以下方法foo.example.com/foo 从重定向到foo.example

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^foo/?$ https://foo.example.com/ [L,R=301,NC,QSA]

# BEGIN WordPress
RewriteEngine On
# ... WordPress rewrite rules here.
# END WordPress
如果你想重定向example.com/foo, e、 g。example.com/foo/some-filefoo.example.com/some-file, 然后你可以改变上面的内容RewriteRule 行到:(即,您基本上只需要使用重写规则的正则表达式。)

RewriteRule ^f(/(.*))?$ https://foo.example.com/$2 [L,R=301,NC,QSA]

相关推荐

重定向到/wp-admin/edit.php,而不是wp_reDirect url

我正在尝试使用带有参数的链接在管理编辑帖子页面上更改自定义帖子类型。问题是当我试图重定向到没有这些自定义参数的页面时,谢谢wp_redirect().这是我在类中的代码: add_action(\'admin_init\',array( $this, \'foo_actions\' ) ); function foo_actions(){ if( isset( $_GET[\'foo_action\'] ) ){