使用 htaccess 将子文件夹内容重定向到不同的域(500 内部服务器错误)

Redirect subfolder content to different domain with htaccess (500 Internal Server Error)

我正在尝试将所有内容从 domain.com/subfolder 重定向到 newdomain.com

目前在 .htaccess domain.com/subfolder 中使用:

RedirectMatch 301 ^/subfolder/$ http://newdomain.com/

问题是它只适用于 http://newdomain.com/,但在浏览 ex 时。 http://newdomain.com/page1 弹出 500 错误。

也尝试过

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.domain\.com\subfolder$
RewriteRule (.*) http://newdomain.com./ [R=301,L]
RewriteCond %{HTTP_HOST} !^domain\.com\subfolder$
RewriteRule (.*) http://newdomain.com/ [R=301,L]

这段代码产生:

newdomain.com redirected you too many times. Try clearing your cookies.

两个域属于同一个帐户。

... both domains belong to the same account.

在这种情况下您需要使用 mod_rewrite,因为您无法区分 domains/hosts 和 mod_alias(即 RedirectMatch)。另外,请注意 301 重定向将被浏览器缓存,因此浏览器很可能已经缓存了您之前的(错误的)尝试。

RewriteCond %{HTTP_HOST} !^www\.domain\.com\subfolder$

HTTP_HOST 服务器变量仅包含 URL 的 host(或域)部分。这不包括 subfolder。 (但是您还使用反斜杠作为路径分隔符,并且在替换中有一个错误的点。)

domain.com/subfolder/.htaccess 文件中尝试以下操作:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
RewriteRule (.*) http://newdomain.com/ [R=302,L]

当您确定它工作正常时,将 302(临时)更改为 301(永久)。上面说了,301有缓存,302没有,这样测试起来更方便。