www가 아닌 www로 일반 htaccess 리디렉션
로 리디렉션 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]
이 작품을 제외하고 는 Michael 과 같습니다 : 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을 no-www로 리디렉션하는 규칙은 다음과 같습니다.
#########################
# redirect www to no-www
#########################
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^(.*) http://%1/$1 [R=301,NE,L]
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 포함을 처리하는 데 사용합니다.
- 일반적인. 도메인 정보가 필요하지 않습니다.
- 기본 도메인에서 WWW를 강제 실행 : www.domain.com
- subdomains.com의 하위 도메인에서 WWW를 제거합니다.
- HTTP / HTTPS 상태를 유지합니다.
- 도메인 / 하위 도메인에 대한 개별 쿠키를 허용합니다
이것이 어떻게 작동하는지 또는 허점을 떠난 경우 알려주십시오.
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]
이것을 다음 파일에 추가하십시오.
/site/location/.htaccess
https가 아닌 www가 아닌 www
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]
.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>
DOT를 =>로 변경하십시오. !!!
위의 규칙을 사용하여 www를 www가 아닌 www로 fwd하고 홈페이지에서는 제대로 작동하지만 내부 페이지에서는 /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.*
에서 Redirect
with if
지시문을 사용 하여이 작업을 수행 할 수 있습니다 .
<if "%{HTTP_HOST} =='www.example.com'">
Redirect / http://example.com/
</if>
사용 : 자바 스크립트 / 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({
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);
}
}
});
내가 일할 수있는 유일한 방법은 ...
RewriteEngine On
RewriteCond %{HTTP_HOST} ^site\.ro
RewriteRule (.*) http://www.site.ro/$1 [R=301,L]
당신이 www를 강요하는 경우. url 또는 ssl prototcol을 강제 실행하는 경우 다음과 같이 htaccess 파일에서 가능한 변형을 사용하십시오.
RewriteEngine 켜기 RewriteBase / ### Force WWW ### RewriteCond % {HTTP_HOST} ^ example \ .com RewriteRule (. *) http://www.example.com/$1 [R = 301, L] ## 강제 SSL ### RewriteCond % {SERVER_PORT} 80 RewriteRule ^ (. *) $ https://example.com/$1 [R, L] ## IP 차단 ### 주문 거부, 허용 256.251.0.139에서 거부 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]
Michael과의 유일한 변경 은을 제거하는 것입니다 [NC]
. "AH00665"오류가 발생합니다.
비정규 패턴 '-f'에 대한 NoCase 옵션은 지원되지 않으며 무시됩니다.
htaccess 파일에서 다음 규칙을 사용할 수 있습니다.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
참고 URL : https://stackoverflow.com/questions/234723/generic-htaccess-redirect-www-to-non-www
'development' 카테고리의 다른 글
HTTP 프록시를 통해 Git 저장소에서 어떻게 가져 옵니까? (0) | 2020.02.14 |
---|---|
자바 스크립트로 쿠키 설정 및 쿠키 받기 (0) | 2020.02.14 |
Mac OS X의 터미널에서 이전 출력을 지우는 방법은 무엇입니까? (0) | 2020.02.14 |
문자열 C #에서 줄 바꿈 바꾸기 (0) | 2020.02.14 |
ImportError : 모듈 이름이없는 요청 (0) | 2020.02.13 |