使用Apache和htaccess将旧域重定向到新域的问题

时间:2009-06-27 15:01:04

标签: apache .htaccess redirect dns

我的主页位于www.nazgulled.net,我买了一个新域名www.ricardoamaral.net。这两个域都指向同一个服务器。

我有两个重定向问题,我目前的代码是:

RewriteCond %{HTTP_HOST} ^(www\.)?nazgulled\.net [NC]
RewriteRule ^(.*)$ http://www.ricardoamaral.net/$1 [L]

现在我只是测试,但是当我准备移动整个东西时,我的想法是用[L,R = 301]替换[L],只是你知道。

总之...

1)这不起作用,当我尝试它时,我无法访问“nazgulled.net”,它给我一个“服务器内部错误”,我不明白为什么。 ..我不明白为什么因为如果用“google.com”替换“ricardoamaral.net”,重定向就可以了:/

2)我有一些子域名,我想重新定位其中的所有内容。我的第一选择是为每个子域添加不同的重写条件/规则,但需要大量的手动代码,如果用户键入一些不存在的子域,则不会重定向它,我也想要它。

3 个答案:

答案 0 :(得分:3)

我认为根据您的情况创建单独的虚拟主机将是理想的选择。我经常做的是将域重定向到同一服务器但在不同的文件夹中以保持www文件夹清洁。我的主要网站将在这里:

/var/www/example.com/public

对于我的所有重定向,我会像这样放置它们:

/var/www/redirects/example-2.com/public

在重定向网站的每个公用文件夹中,您都会将此行添加到.htaccess文件

RedirectMatch permanent /.* http://example.com/

答案 1 :(得分:2)

对于1,你可以使用这样的东西:

<VirtualHost *:80>
  ServerAdmin webmaster@nazgulled.net
  ServerName nazgulled.net
  ServerAlias www.nazgulled.net
  Redirect permanent / http://www.ricardoamaral.net/
</VirtualHost>

我使用类似的配置,它可以很好地工作,保留查询参数,路径等。

关于您自己的重写规则,我想要注意,如果您不包含QSA,可能会丢失您的查询参数。

要诊断内部服务器错误,只需查看您的vhost或全局错误日志文件提供的日志文件,具体取决于您的配置。它应该给出错误的确切原因。

答案 2 :(得分:0)

这是最好的解决方案。如果您还没有现有文件,请创建一个记事本文件并将其另存为.htaccess。 使用以下代码更新.htaccess文件并保存

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://new-domain.com/$1 [R=301,L]