2017-02-13 94 views
1

这两个.htaccess片段的行为是否相同,或者对于某些用例而言是否有益?.htaccess永久重定向比较

目标是将网站的域名从www.oldexample.com更改为www.newexample.com。它应该解释来自www.oldexample.com的子目录和页面,这些子目录和页面将继续存在于www.newexample.com下相同的路径中。

片段1

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^oldexample.com [NC,OR] 
RewriteCond %{HTTP_HOST} ^www.oldexample.com [NC] 
RewriteRule ^(.*)$ https://www.newexample.com/$1 [L,R=301,NC] 

片段2

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule ^(.*) https://www.newexample.com%{REQUEST_URI} [L,R=301,NC] 

例如,当含有这两种片段的.htaccess文件被放置在www.oldexample的根目录下。 com,当有人要求:

www.oldexample.com/subdirectory/hello-world.php

他们应该被重定向到:

www.newexample.com/subdirectory/hello-world.php

在此先感谢!

+0

我的答案是否适合你?也许你可以接受它。谢谢。 – SuperDuperApps

回答

2

要么会工作。唯一重要的区别是第一个HTTP_HOST的检查。如果其他主机由其中的.htaccess文件在同一个文件夹中提供,则这将是必要的。否则他们是没有必要的。 Options +FollowSymlinks是必要的,但可能已经设置在主配置级别,重写不会没有它的工作。

我建议你使用:

RewriteEngine On 
RewriteRule^https://www.newexample.com%{REQUEST_URI} [L,R=301] 

基本上选择两个,而是清理删除不必要的东西(未使用的捕获和当在比赛中被指定的情况下没有毫无意义不区分大小写)。

但更简单的方法来达到同样的事仅仅是:

Redirect 301/https://www.newexample.com/ 

如果您需要检查主机,使用:

RewriteEngine On 
RewriteCond %{HTTP_HOST} (?:^|\.)oldexample.com$ 
RewriteRule^https://www.newexample.com%{REQUEST_URI} [L,R=301] 

将匹配oldexample.comanything.oldexample.com。让我知道如果这不符合您的需求。