gur*_*un8 11 mod-rewrite apache-2.2
我有一个从旧域名(例如 olddomain.com)迁移到新域名(例如 newdomain.com)的网站。
出于 SEO 的原因,我需要将所有网站流量重写为主要的新域名(例如 www.newdomain.com)。不幸的是,我不知道如何添加多个 OR 类型的重写条件。似乎在所有条件下,下面的示例代码,我得到了一个 AND 条件。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName newdomain.com
ServerAlias www.newdomain.com
ServerAlias olddomain.com
ServerAlias www.olddomain.com
DocumentRoot /var/www/newdomain.com/www/
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
RewriteEngine on
RewriteCond %{HTTP_HOST} ^olddomain.com [NC]
RewriteCond %{HTTP_HOST} ^www.olddomain.com [NC]
RewriteCond %{HTTP_HOST} ^newdomain.com [NC]
RewriteRule ^/(.*)$ http://www.newdomain.com/$1 [R=301,NC]
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
有人可以给我一点帮助吗?任何帮助将不胜感激。
Laz*_*One 17
尽管您已经找到了适合您的解决方案,但我仍然会发布它,因为您的解决方案远非最佳。
溶液#1:替换[NC]通过[NC,OR]在原始代码中的第一个2个的RewriteCond行。默认情况下,一个 RewriteCond 通过逻辑链接到另一个 RewriteCond AND。这将指示 Apache 使用OR逻辑:
RewriteCond %{HTTP_HOST} ^olddomain.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.olddomain.com [NC,OR]
RewriteCond %{HTTP_HOST} ^newdomain.com [NC]
RewriteRule ^/(.*)$ http://www.newdomain.com/$1 [R=301,L,NC]
Run Code Online (Sandbox Code Playgroud)
解决方案#2:由于您总共只有 4 个域名,因此使用相反的方法会更容易 - 从任何域重定向,除了正确的一个:
RewriteCond %{HTTP_HOST} !^www.newdomain.com [NC]
RewriteRule ^/(.*)$ http://www.newdomain.com/$1 [R=301,L,NC]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60239 次 |
| 最近记录: |