.htaccess mod_rewrite 域之间的重定向

标签 .htaccess mod-rewrite dns redirect

我有两个域名,cshen.ca 和 cshen.net,都指向同一个地方。

我正在尝试使用 mod_rewrite 完成以下任务:

  • cshen.net 被 301 重定向至 cshen.ca
  • www.cshen.netwww.cshen.ca 均重定向至 cshen.ca
  • 重定向后保留域名后的路径,例如www.cshen.net/foo/bar/将重定向到cshen.ca/foo/bar/

我尝试了各种规则,但似乎无法使其发挥作用。

RewriteCond %{HTTP_HOST} ^cshen\.net$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://cshen.ca/$1 [R=301,L]

这完成了前两条规则,但将所有内容重定向回主页,并且不保留 URL 的其余部分。

RewriteCond %{HTTP_HOST} ^cshen\.net$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^/(.*)$ http://cshen.ca/$1 [R=301,L]

进行一些小的更改并向 RewriteRule 添加斜杠“/”会保留 URL 的其余部分,但只有 www.cshen.ca 被重定向。 cshen.netwww.cshen.net 都不会被重定向到任何地方。

我也尝试过Apache's guide并使用此代码:

RewriteCond %{HTTP_HOST} !^cshen\.ca [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://cshen.ca/$1 [L,R]

我认为这会起作用,因为它应该重定向cshen.ca以外的任何网址,但是,就像第二段代码一样,它没有任何作用cshen.netwww.cshen.net

我几乎没有其他可以尝试的想法了。如果有人能帮忙,我将不胜感激!

附录:如果重要的话,我正在使用 WordPress 的漂亮 URL,其重写规则是:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

我尝试将我的规则放在 WordPress 规则之前和之后(当我将其放在之前时,我当然会在我的规则之前添加 RewriteEngine On),没有任何区别。

谢谢!

最佳答案

不知道如何编辑,通过将apache的代码放在WP之前解决

一定是忘记了早些时候测试这个。

关于.htaccess mod_rewrite 域之间的重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1151328/

相关文章:

php - SEO 友好 URL 而不是查询字符串 .htaccess

php - .htaccess 删除单个文件的扩展名

regex - 使用 RewriteRule 从重定向中删除主题标签

macos - 使用 VirtualHost 时,CakePHP 仅适用于 Mac 本地

regex - 使用 RewriteCond %{QUERY_STRING} 而不将查询字符串附加到新地址

ruby-on-rails - 如何在裸域中配置 Google Domains + Heroku

php - 从子目录飞行 PHP 路由

apache - htaccess 拒绝所有获取 apache 服务器测试页面

azure - 使用 VM 名称 Ping 同一子网中的 Azure VM

windows - 通过组策略添加管理员