通过 Apache 重写规则永久重定向远备用域,而不影响目标域的非 www
我正在尝试编写一条规则,将一个域名永久重定向到另一个域名,
RewriteCond %{HTTP_HOST} ^www.companyname1.com$
RewriteRule ^(.*)$ http://www.companyname2.com/$1 [R=301,L]
这仅在用户记得输入 www 时有效,如果用户没有在 url 中输入 www,页面将加载,但图像链接将被破碎的。
有谁知道如何调整上述规则使其在有或没有 www 的情况下都可以工作?
我正在使用 LAMP 配置,redhat 上的 apache 2。
I am trying to write a rule to permenantly redirect a domainname to another domain name
RewriteCond %{HTTP_HOST} ^www.companyname1.com$
RewriteRule ^(.*)$ http://www.companyname2.com/$1 [R=301,L]
This only works if the user remembers to type in www, if the user does not type in www in the url, the page will load but the image links will be broken.
Does anyone know how to adjust the above rule to it works with and without www?
I am using a LAMP configuration, apache 2 on redhat.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用 [OR] 提供多个可选的重写条件:
这应该可以解决问题。如果 www 存在,则第一个重写条件触发;如果 www 被遗忘,则第二个重写条件触发。
You can supply several optional Rewrite-Conditions with [OR]:
This should do the trick. The first Rewrite-Condition fires, if www is present, the second one fires, if www has been forgotten.
重定向对我不起作用,我必须对其进行调整,下面是基于@Demento 答案的工作版本。
The redirect was not working for me and I had to adjust it, below is a working version based on the answer by @Demento.
如果您不关心主机名以什么开头,则不要 root 正则表达式,只需检查它是否以 companyname1.com 结尾。
至于前导斜杠,只需将其作为可选添加到正则表达式的根部即可。
If you don't care what the hostname starts with then don't root the regex, just check that it ends with companyname1.com.
As for the leading slash just add it at as optional to the root of your regex.
或者只是使用简单的正则表达式:
Or just by using simple regex: