htaccess 中的 301 重定向不起作用

301 redirection in htaccess not working

我在尝试将旧域重定向到新域时遇到问题。现在的情况是这样的:

newdomain.pl <- 已连接到博主帐户
olddomain.pl <- 使用 .htaccess 文件连接到服务器(在连接到博客帐户之前)

我希望它像这样工作:olddomain.pl/subdomain -> redirect to newdomain.pl/subdomain。但是无论我尝试将什么放入我的 .htaccess 文件,它都会将我的旧站点重定向到 newdomain (newdomain.pl) 的主页。我试过这样的代码:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^newdomain.pl[nc]
RewriteRule ^(.*)$ http://www.newdomain.pl/ [r=301,nc]

但它也重定向到新域的主页。只有当我输入:

RedirectRule / http://www.newdomain.pl

它正在重定向到 http://www.newdomain.plsubdomain <- 但新域名和子域名之间缺少斜杠“/”。不幸的是,当我写这篇文章时:

RedirectRule / http://www.newdomain.pl/

它正在重定向到主域页面 http://www.newdomain.pl,因此无法正常工作。我不知道出了什么问题,我已经和那三天抗争了。有谁知道问题出在哪里?也许我买的主机有问题?

提前感谢您的回复
此致,帕维尔

在 olddomain/.htaccess 试试这个:

RedirectMatch ^/(.*)$ http://newdomain.com/

下一步试试:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^olddomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.olddomain.com$
RewriteRule ^(.*)$ http://newdomain.com/ [L,R]

仅重定向查询而不直接重定向到域删除 R 标志。

好的,我找到了解决方案。问题是 RewriteRule 中没有包含 "www"。当我改变它时,它起作用了。我将对我有用的代码放在下面:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.olddomain.pl$
RewriteRule ^(.*)$ http://www.newdomain.pl/ [L,R=301]

RewriteCond %{HTTP_HOST} ^olddomain.pl$
RewriteRule ^(.*)$ http://www.newdomain.pl/ [L,R=301]

谢谢大家!