아파치는 여러 조건을 다시 작성 /var/www/newdomain.com/www/

기존 도메인 이름 (예 : 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>

누군가 나에게 약간의 도움을 줄 수 있습니까? 도움을 주시면 감사하겠습니다.



답변

당신은 당신이 이미 솔루션을 작업 발견 한 사실에도 불구하고, 나는 아직도이를 게시 할 예정입니다 지금까지 최적의 것을.

솔루션 # 1 : 교체 [NC]에 의해 [NC,OR]원래의 코드의 처음 2 개한다 RewriteCond 라인이다. 기본적으로 하나의 RewriteCond가 logical로 다른 RewriteCond에 연결되었습니다 AND. 이것은 아파치에게 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]

해결 방법 # 2 : 총 4 개의 도메인 이름 만 있으므로 올바른 방법을 제외한 모든 도메인에서 리디렉션하는 반대 접근 방식을 사용하는 것이 훨씬 쉽습니다.

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


답변

이 인용문을 찾았습니다.

rewriteCond는 그 뒤에 오는 단일 rewriteRule에만 적용됩니다.

여기 : http://www.webmasterworld.com/apache/3350200.htm

나에게 맞는 해결책은 다음과 같습니다.

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^olddomain.com [NC]
    RewriteRule ^/(.*)$ http://www.newdomain.com/$1 [R=301,NC]

    RewriteCond %{HTTP_HOST} ^www.olddomain.com [NC]
    RewriteRule ^/(.*)$ http://www.newdomain.com/$1 [R=301,NC]

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


답변