0

我已经用谷歌搜索了至少 3 个小时,并尝试了堆栈溢出和其他论坛上的所有示例。有谁知道如何使用 .htaccess(重定向或重写)来将所有流量从一个域重定向到另一个域,而无需在 .com 之后传递任何内容?

我有一个旧域名:

http://www.olddomain.com

我想将所有到该域的请求重定向到特定的 URL

http://www.newdomain.com/new/directory/

我在 .htaccess 中尝试了很多类型的重定向和重写规则,但如果我提出如下请求:

http://www.olddomain.com/some/directory/

重定向总是来到新域,如:

http://www.newdomain.com/new/directory/some/directory/

重定向将挂起的 URI 发布到重定向上。

我试过添加?在新 URL 的末尾,这无济于事。

这是我的一些重定向。(更改域名以保护无辜者)

RewriteEngine on

#RewriteRule ^ http://www.newdomain.com/new/directory/ [R=301,L]
#RewriteRule ^ http://www.newdomain.com/new/directory/? [R=301,L]
#RewriteRule /?$ http://www.newdomain.com/new/directory/? [R=301,L]
RewriteRule ^([^/\.]+)/?$ http://www.newdomain.com/new/directory/? [R=301,L]

我也尝试了重定向命令...

Redirect 301 / http://www.newdomain.com/new/directory/?

这些似乎都没有删除 /some/directory/ 并继续重定向到

http://www.newdomain.com/new/directory/some/directory/

任何想法将不胜感激。

4

1 回答 1

0

试试:

RedirectMatch 301 ^ http://www.newdomain.com/new/directory/?

但是如果你更愿意使用 mod_rewrite,看起来你已经非常接近你的规则了,它只需要让正则表达式匹配任何东西

RewriteRule ^ http://www.newdomain.com/new/directory/? [R=301,L]

需要注意的是,如果这两个域实际上都托管在同一个服务器上,同一个文档根目录,并且您将把它放在一个 htaccess 文件中,那么您需要在上面添加一个额外的RewriteRule检查主持人:

RewriteCond %{HTTP_HOST} olddomain.com$ [NC]
于 2012-08-02T20:35:39.920 回答