Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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重写规则进行永久重定向_Apache_Mod Rewrite_Redirect - Fatal编程技术网

通过apache重写规则进行永久重定向

通过apache重写规则进行永久重定向,apache,mod-rewrite,redirect,Apache,Mod Rewrite,Redirect,我正在尝试编写一个规则,将一个域名永久重定向到另一个域名 RewriteCond %{HTTP_HOST} ^www.companyname1.com$ RewriteRule ^(.*)$ http://www.companyname2.com/$1 [R=301,L] 这只有在用户记得键入www时才有效,如果用户没有在url中键入www,页面将被加载,但图像链接将被破坏 是否有人知道如何调整上述规则,使之适用于使用和不使用www的情况 我使用的是LAMP配置,即redhat上的apache

我正在尝试编写一个规则,将一个域名永久重定向到另一个域名

RewriteCond %{HTTP_HOST} ^www.companyname1.com$
RewriteRule ^(.*)$ http://www.companyname2.com/$1 [R=301,L]
这只有在用户记得键入www时才有效,如果用户没有在url中键入www,页面将被加载,但图像链接将被破坏

是否有人知道如何调整上述规则,使之适用于使用和不使用www的情况


我使用的是LAMP配置,即redhat上的apache 2。

您可以使用[或]提供几种可选的重写条件:

RewriteCond %{HTTP_HOST} ^www.companyname1.com$ [OR]
RewriteCond %{HTTP_HOST} ^companyname1.com$
RewriteRule ^(.*)$ http://www.companyname2.com/$1 [R=301,L]

这应该能奏效。如果www存在,则触发第一个重写条件,如果www已被遗忘,则触发第二个重写条件。

重定向对我不起作用,我必须对其进行调整,下面是基于@Demento的答案的工作版本

# Parmenent redirect to webdesign.danols.com of all pages
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.kingston-web-design.com [OR]
RewriteCond %{HTTP_HOST} ^kingston-web-design.com
RewriteRule ^(.*)$ http://webdesign.danols.com.com$1 [R=301,L]

如果您不关心主机名以什么开头,那么不要在regex中加根,只需检查它是否以companyname1.com结尾

至于前导斜杠,只需将其作为可选项添加到正则表达式的根中即可

RewriteCond %{HTTP_HOST} companyname1.com$
RewriteRule ^/?(.*) http://www.companyname2.com/$1 [R=permanent,L]

或者只使用简单的正则表达式:

RewriteCond %{HTTP_HOST} ^(www.)?companyname1\.com$
RewriteRule ^(.*)$ http://www.companyname2.com/$1 [R=301,L]

符号名[R=permanent]“而不是数字301稍微更为优化,因为它可以避免配置中的混乱。使用时:“RewriteRule^(.*$[R=permanent,L]”对我来说,RewriteRule在域后添加了一个额外的斜杠,所以我不得不将其替换为@Stickley Wow。“稍微优化一些”。你知道“优化”吗“是最高级吗?您应该始终注意使用
301
alias
permanent