Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache .htaccess永久重定向比较_Apache_.htaccess_Redirect_Mod Rewrite - Fatal编程技术网

Apache .htaccess永久重定向比较

Apache .htaccess永久重定向比较,apache,.htaccess,redirect,mod-rewrite,Apache,.htaccess,Redirect,Mod Rewrite,这两个.htaccess代码段的行为相同吗?或者在某些用例中,这两个代码段相比其他代码段是否有好处 目标是将网站的域名从www.oldexample.com更改为www.newexample.com。它应该考虑www.oldexample.com中的子目录和页面,这些子目录和页面将继续存在于www.newexample.com下的同一路径中 片段1 RewriteEngine on RewriteCond %{HTTP_HOST} ^oldexample.com [NC,OR] RewriteC

这两个.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


提前谢谢

两者都可以。唯一显著的区别是在第一个测试中检查HTTP_主机。如果其他主机由包含
.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.com
anything.oldexample.com
。如果这不符合您的需要,请告诉我。

我的答案对您有用吗?也许你可以接受。谢谢