문제

리디렉션하고 싶습니다 www.example.com 에게 example.com. 다음 htaccess 코드가이를 수행합니다.

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

그러나 도메인 이름을 하드 코딩하지 않고 일반적인 방식으로 이것을 할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

동일 마이클 이 하나를 제외하고는 다음과 같습니다. p

다른 팁

그러나 별도의 HTTP 및 HTTPS를 위해이 작업을 수행해야한다면 :

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

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

리디렉션 비 WWW 에게 www (둘 다 : http + https)

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

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

httpd.conf 파일 에서이 작업을 수행하려면 mod_rewrite없이 수행 할 수 있습니다 (그리고 성능이 더 좋습니다).

<VirtualHost *>
  ServerName www.example.com
  Redirect 301 / http://example.com/
</VirtualHost>

나는 여기에 그 대답을 얻었다 : https://serverfault.com/questions/120488/redirect-url-within-apache-virtualhost/120507#120507

다음은 www url을 www로 리디렉션하는 규칙입니다.

#########################
# redirect www to no-www
#########################

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

다음은 No-WWW URL을 www로 리디렉션하는 규칙입니다.

#########################
# redirect no-www to www
#########################

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

내가 사용 했음에 유의하십시오 NE 아파치가 쿼리 문자열을 벗어나지 못하게하는 플래그. 이 깃발이 없으면 Apache는 요청 된 URL을 변경합니다. http://www.example.com/?foo%20bar 에게 http://www.example.com/?foo%2250bar

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^/(.*)$ http://%1/$1 [R]

그만큼 RewriteCond 모든 것을 캡처합니다 HTTP_HOST 변하기 쉬운 ~ 후에 그만큼 www. 그리고 그것을 저장합니다 %1.

그만큼 RewriteRule 리드없이 URL을 캡처합니다 / 그리고 그것을 저장합니다 $1.

이 시도:

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

호스트가 www로 시작하면 전체 호스트를 URL의 시작 부분에 고정시킨 다음 "www"를 벗습니다.

htaccess 리디렉션에 대해 많은 잘못된 정보가있을 수 있습니다. 먼저,이 코드가 작동 할 것으로 예상되는 경우 Windows 호스트가 아닌 Apache를 사용하여 사이트가 UNIX에서 실행 중인지 확인하십시오.

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]

RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

(하지만 각 텍스트 라인 사이에 선 공백이 없는지 확인하십시오. 선 사이에 추가 공간이 추가 되어이 창에서 괜찮습니다.)

이것은 사이트의 www 버전을 http : // 버전으로 지시하는 데 사용할 수있는 코드 스 니펫 중 하나입니다. 사용할 수있는 다른 유사한 코드도 있습니다.

완전한 일반 www 핸들러, HTTP/HTTPS

나는 완전한 대답을 보지 못했습니다. 나는 이것을 사용하여 www 포함을 처리합니다.

  1. 일반적인. 도메인 정보가 필요하지 않습니다.
  2. 1 차 영역의 www : www.domain.com
  3. 서브 도메인에서 www를 제거합니다 : sub.domain.com
  4. HTTP/HTTPS 상태를 보존합니다.
  5. 도메인 / 하위 도메인에 대한 개별 쿠키를 허용합니다

이것이 어떻게 작동하는지 또는 허점을 남겼는지 알려주세요.

RewriteEngine On
RewriteBase /

# Force WWW. when no subdomain in host
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ [NC]
RewriteCond %{HTTPS}s ^on(s)|off [NC]
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Remove WWW. when subdomain(s) in host     
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|off [NC]
RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)(.+\.)(.+\.)(.+)$ [NC]
RewriteRule ^ %1%3%4%5%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/subfolder/$1 [R=301,L]

하위 폴더를 위해

전체 사이트에 액세스 할 수있는 사람들을 위해 없이 'www'접두사.

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]

Mare는 이것을 다음 파일에 추가하십시오

/site/location/.htaccess 

www to www with https

RewriteEngine on

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

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

위의 규칙을 FWD www에 www에 사용했으며 홈페이지에는 적합하지만 내부 페이지에서는 /index.php로 전달됩니다.

.htaccess 파일 에서이 다른 규칙을 발견했는데, 이는 이것을 일으키고 있지만 무엇을 해야할지 잘 모르겠습니다. 모든 제안은 좋을 것입니다.

############################################
## always send 404 on missing files in these folders

    RewriteCond %{REQUEST_URI} !^/(media|skin|js)/

############################################
## never rewrite for existing files, directories and links

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l

############################################
## rewrite everything else to index.php

    RewriteRule .* index.php [L]
RewriteEngine on
# if host value starts with "www."
RewriteCond %{HTTP_HOST} ^www\.
# redirect the request to "non-www"
RewriteRule ^ http://example.com%{REQUEST_URI} [NE,L,R]

제거하려면 www 둘 다 http 그리고 https , 다음을 사용하십시오.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.
RewriteCond %{HTTPS}s ^on(s)|offs
RewriteRule ^ http%1://example.com%{REQUEST_URI} [NE,L,R]

이것은 비 SSL을 리디렉션합니다

에게

및 SSL

에게

아파치에서 2.4.* 당신은 a를 사용하여 이것을 달성 할 수 있습니다 Redirect ~와 함께 if 지령,

<if "%{HTTP_HOST} =='www.example.com'">
Redirect / http://example.com/
</if>

사용 : JavaScript / jQuery

// similar behavior as an HTTP redirect
window.location.replace("http://www.stackoverflow.com");
// similar behavior as clicking on a link
window.location.href = "http://stackoverflow.com";

또는 .htaccess :

RewriteEngine On
RewriteBase /
Rewritecond %{HTTP_HOST} ^www\.yoursite\.com$ [NC]
RewriteRule ^(.*)$ https://yoursite.com/$1 [R=301,L]

및 PHP 방법 :

$protocol = (@$_SERVER["HTTPS"]    == "on") ? "https://" : "http://";

if (substr($_SERVER['HTTP_HOST'], 0, 4) !== 'www.') {
    header('Location: '.$protocol.'www.'.$_SERVER    ['HTTP_HOST'].'/'.$_SERVER['REQUEST_URI']);
    exit;
}

Ajax

$.ajax({
    type: "POST",
    url: reqUrl,
    data: reqBody,
    dataType: "json",
    success: function(data, textStatus) {
        if (data.redirect) {
            // data.redirect contains the string URL to redirect to
            window.location.href = data.redirect;
        }
        else {
            // data.form contains the HTML for the replacement form
            $("#myform").replaceWith(data.form);
        }
    }
});

.htaccess를 사용하여 www 또는 비 www로 리디렉션 :

다음 코드 줄을 기본 .htaccess 파일에 넣으십시오. 두 경우 모두 domain.com을 자신의 호스트 이름으로 변경하십시오.

www로 리디렉션

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTP_HOST} ^domain\.com [NC]
  RewriteRule ^(.*)$ http://wwwDOTdomainDOtcom/$1 [L,R=301]
</IfModule>

비 WWW로 리디렉션

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC]
  RewriteRule ^(.*)$ http://domainDOTcom/$1 [L,R=301]
</IfModule>

점을 =>로 변경합니다. !!!!!!!!

내가 일할 수있는 유일한 방법 ...

RewriteEngine On
RewriteCond %{HTTP_HOST} ^site\.ro
RewriteRule (.*) http://www.site.ro/$1 [R=301,L]

당신이 www를 강요하는 경우. URL 또는 강제 SSL 프로토콜스에서 다음과 같은 htaccess 파일에서 가능한 변형을 사용해보십시오.

RewriteEngine On
RewriteBase /

### Force WWW ###

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

## Force SSL ###

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://example.com/$1 [R,L]

## Block  IP's ###
Order Deny,Allow
Deny from 256.251.0.139
Deny from 199.127.0.259

선택한 답변과 다른 많은 솔루션은 /이후 URL의 일부를 떨어 뜨 렸습니다. 기본적으로 기본적으로 적어도 나에게는 항상 메인 도메인으로 리디렉션되었습니다. 그래서 나는 슬래시 후 전체 경로에 관한 작업 샘플을 추가하고 있습니다.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [L,R=301]

왜 www를 제거하고 싶은지 잘 모르겠습니다. 그러나 리버스 버전은 다음과 같습니다.

# non-www.* -> www.*, if subdomain exist, wont work
RewriteCond %{HTTP_HOST} ^whattimein\.com
RewriteRule ^(.*)$ http://www.whattimein.com/$1 [R=permanent,L]

그리고이 스크립트의 장점은 다음과 같습니다. test.whattimein.com 또는 기타 (개발/테스트를위한 환경)와 같은 것이 있다면 u를 원래 환경으로 리디렉션하지 않습니다.

Apache 2.4에서 작업하도록 업데이트되었습니다.

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

유일한 변화 vs 마이클 제거하는 것입니다 [NC], "AH00665"오류를 생성하는 것 :

비록 검색 패턴 '-f'에 대한 Nocase 옵션은 지원되지 않으며 무시됩니다.

안녕하세요 HTAccess 파일에서 다음 규칙을 사용할 수 있습니다.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top