로드시 다른 페이지로 리디렉션하도록 기본 HTML 페이지를 설정할 수 있습니까?
로드시 다른 페이지로 리디렉션하도록 기본 HTML 페이지를 설정할 수 있습니까?
답변:
다음을 사용하십시오.
<meta http-equiv="refresh" content="0; url=http://example.com/" />
참고 : 헤드 섹션에 배치하십시오.
또한 올바르게 새로 고쳐지지 않을 경우 빠른 링크를 추가하면 이전 브라우저의 경우 :
<p><a href="http://example.com/">Redirect</a></p>
로 표시됩니다
그래야 추가 클릭으로 계속 이동할 수 있습니다.
0
0 초 후에 새로 고침 하는 수단입니다. 무슨 일이 일어나고 있는지 알 수있는 시간을 사용자에게 더 제공 할 수 있습니다.
meta 및 JavaScript 코드를 모두 사용 하고 경우에 대비하여 링크가 있습니다.
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="0; url=http://example.com">
<script type="text/javascript">
window.location.href = "http://example.com"
</script>
<title>Page Redirection</title>
</head>
<body>
<!-- Note: don't tell people to `click` the link, just tell them that it is a link. -->
If you are not redirected automatically, follow this <a href='http://example.com'>link to example</a>.
</body>
</html>
완벽을 기하기 위해 가능한 경우 서버 리디렉션을 사용하는 것이 가장 좋은 방법이라고 생각하므로 301 상태 코드를 보내십시오 . Apache를.htaccess
사용하는 파일 이나 WordPress를 사용하는 수많은 플러그인을 통해 쉽게 수행 할 수 있습니다 . 모든 주요 컨텐츠 관리 시스템을위한 플러그인도 있다고 확신합니다. 또한 cPanel은 서버에 301 리디렉션을 설치 한 경우 매우 쉽게 구성 할 수 있습니다.
body
태그 등 을 떨어 뜨리는 큰 팬이 아니다 . 아마도 그것은 유효성을 검사하고 아마도 일반적인 브라우저에서 작동합니다. 문제가 발생하는 프린지 케이스가 있다고 확신하며 그 이점은 작습니다.
click here
화면 판독기가 탐색하기가 더 어려우므로 링크를 사용하지 않는 것이 좋습니다. 링크는 목적지를 설명하는 텍스트에 있어야하므로 사용자는 목적지를 따라 가기 전에 도착할 위치를 알고 있지만 상호 작용합니다.
또한 SEO 담당자 를 도울 수있는 표준 링크를 추가 하겠습니다 .
<link rel="canonical" href="http://www.example.com/product.php?item=swedish-fish"/>
이것은 모든 이전 답변과 .htaccess를 통한 HTTP 새로 고침 헤더를 사용하는 추가 솔루션의 합계입니다.
1. HTTP 새로 고침 헤더
우선, .htaccess를 사용하여 다음과 같이 새로 고침 헤더를 설정할 수 있습니다
Header set Refresh "3"
이것은 PHP 에서 header()
함수 를 사용하는 것과 "정적"입니다
header("refresh: 3;");
이 솔루션이 모든 브라우저에서 지원되는 것은 아닙니다.
2. 자바 스크립트
대체 URL :
<script>
setTimeout(function(){location.href="http://example.com/alternate_url.html"} , 3000);
</script>
대체 URL이없는 경우 :
<script>
setTimeout("location.reload(true);",timeoutPeriod);
</script>
jQuery를 통해 :
<script>
window.location.reload(true);
</script>
3. 메타 새로 고침
JavaScript 및 리디렉션 헤더에 의존하지 않는 경우 메타 새로 고침을 사용할 수 있습니다
대체 URL로 :
<meta http-equiv="Refresh" content="3; url=http://example.com/alternate_url.html">
대체 URL이없는 경우 :
<meta http-equiv="Refresh" content="3">
사용 <noscript>
:
<noscript>
<meta http-equiv="refresh" content="3" />
</noscript>
선택적으로
Billy Moon이 권장 한대로 문제가 발생할 경우 새로 고침 링크를 제공 할 수 있습니다.
자동으로 리디렉션되지 않은 경우 : <a href='http://example.com/alternat_url.html'>Click here</a>
자원
setTimeout
문자열로 전화하지 마십시오 . 대신 함수를 전달하십시오.
최신 웹 표준을 따르기를 원한다면 일반 HTML 메타 리디렉션을 피해야합니다. 서버 측 코드를 만들 수 없으면 대신 JavaScript 리디렉션을 선택해야합니다 .
JavaScript가 비활성화 된 브라우저를 지원하려면 HTML 메타 리디렉션 줄을 noscript
요소에 추가하십시오. noscript
와 결합 중첩 된 메타 리디렉션 canonical
태그는뿐만 아니라 당신의 검색 엔진 순위를 도움이 될 것입니다.
리디렉션 루프를 피하려면 location.replace()
JavaScript 함수를 사용해야합니다 .
적절한 클라이언트 측 URL 리디렉션 코드는 다음과 같습니다 (Internet Explorer 8 이하 수정 및 지연 없음).
<!-- Pleace this snippet right after opening the head tag to make it work properly -->
<!-- This code is licensed under GNU GPL v3 -->
<!-- You are allowed to freely copy, distribute and use this code, but removing author credit is strictly prohibited -->
<!-- Generated by http://insider.zone/tools/client-side-url-redirect-generator/ -->
<!-- REDIRECTING STARTS -->
<link rel="canonical" href="https://stackoverflow.com/"/>
<noscript>
<meta http-equiv="refresh" content="0; URL=https://stackoverflow.com/">
</noscript>
<!--[if lt IE 9]><script type="text/javascript">var IE_fix=true;</script><![endif]-->
<script type="text/javascript">
var url = "https://stackoverflow.com/";
if(typeof IE_fix != "undefined") // IE8 and lower fix to pass the http referer
{
document.write("redirecting..."); // Don't remove this line or appendChild() will fail because it is called before document.onload to make the redirect as fast as possible. Nobody will see this text, it is only a tech fix.
var referLink = document.createElement("a");
referLink.href = url;
document.body.appendChild(referLink);
referLink.click();
}
else { window.location.replace(url); } // All other browsers
</script>
<!-- Credit goes to http://insider.zone/ -->
<!-- REDIRECTING ENDS -->
<meta http-equiv="refresh"
W3C에서 더 이상 사용되지 않는 이유 가 자세히 설명되어 있습니다.
당신은 메타 "리디렉션"을 사용할 수 있습니다 :
<meta http-equiv="refresh" content="0; url=http://new.example.com/address" />
또는 JavaScript 리디렉션 (모든 사용자가 JavaScript를 사용할 수있는 것은 아니므로 항상 백업 솔루션을 준비하십시오)
<script language="javascript">
window.location = "http://new.example.com/address";
</script>
그러나 옵션이 있다면 mod_rewrite 사용하는 것이 좋습니다 .
jQuery Mobile 애플리케이션으로 작업하는 중에 문제가 발생했습니다. 경우에 따라 메타 헤더 태그가 올바르게 리디렉션되지 않습니다. 복잡성). 이 경우 가장 쉬운 해결책은 다음과 같이 JavaScript 리디렉션을 문서 본문에 직접 넣는 것입니다.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="0;url=myURL" />
</head>
<body>
<p>You are not logged in!</p>
<script language="javascript">
window.location = "myURL";
</script>
</body>
</html>
이것은 모든 경우에 나를 위해 작동하는 것 같습니다.
모든 유형의 페이지에서 작동하는 간단한 방법 meta
은 헤드에 태그 를 추가하는 것입니다 .
<html>
<head>
...
<meta HTTP-EQUIV="REFRESH" content="seconds; url=your.full.url/path/filename">
...
</head>
<body>
Don't put much content, just some text and an anchor.
Actually, you will be redirected in N seconds (as specified in content attribute).
That's all.
...
</body>
</html>
JavaScript를 사용해야합니다. head 태그에 다음 코드를 넣으십시오.
<script type="text/javascript">
window.location.assign("http://www.example.com")
</script>
HTTP 상태 코드 301 또는 302로 자동 리디렉션 할 수 있습니다.
PHP의 경우 :
<?php
Header("HTTP/1.1 301 Moved Permanently");
Header("Location: http://www.redirect-url.com");
?>
index.html에서 로그인 페이지의 상대 URL로 사용자를 리디렉션하는 스크립트를 사용합니다.
<html>
<head>
<title>index.html</title>
</head>
<body onload="document.getElementById('lnkhome').click();">
<a href="/Pages/Login.aspx" id="lnkhome">Go to Login Page<a>
</body>
</html>
좋은 측정을 위해 :
<?php
header("Location: example@example.com", TRUE, 303);
exit;
?>
스크립트 위에 에코가 없는지 확인하십시오. 그렇지 않으면 무시됩니다. http://php.net/manual/en/function.header.php
이것은 내가 원하는 모든 것을 가진 리디렉션 솔루션으로 잘라내어 붙여 넣을 수있는 깔끔한 스 니펫에서 찾을 수 없습니다.
이 스 니펫에는 여러 가지 장점이 있습니다.
사용하는 방법:
전체 사이트를 이전 서버로 마이그레이션 한 경우 이전 서버에서 원래 사이트를 중지하고 루트 폴더에서이 파일을 기본 index.html 파일로 다른 사이트를 작성하십시오. 404 오류가이 index.html 페이지로 리디렉션되도록 사이트 설정을 편집하십시오. 하위 레벨 페이지 등의 링크를 통해 이전 사이트에 액세스하는 모든 사람을 잡습니다.
이제 시작 스크립트 태그로 이동하여 oldsite 및 newSite 웹 주소를 편집하고 필요에 따라 초 값을 변경하십시오.
웹 사이트를 저장하고 시작하십시오. 작업 완료-커피 시간.
<!DOCTYPE html>
<html>
<head>
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
<META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 22 Jul 2002 11:12:01 GMT">
<style>
body { margin: 200px; font: 12pt helvetica; }
</style>
</head>
<body>
</body>
<script type="text/javascript">
// Edit these to suit your needs.
var oldsite = 'http://theoldsitename.com'
var newSite = "https://thenewsitename.com";
var seconds = 20; // countdown delay.
var path = location.pathname;
var srch = location.search;
var uniq = Math.floor((Math.random() * 10000) + 1);
var newPath = newSite + path + (srch === '' ? "?" + uniq : srch + "&" + uniq);
document.write ('<p>As part of hosting improvements, the system has been migrated from ' + oldsite + ' to</p>');
document.write ('<p><a href="' + newPath + '">' + newSite + '</a></p>');
document.write ('<p>Please take note of the new website address.</p>');
document.write ('<p>If you are not automatically redirected please click the link above to proceed.</p>');
document.write ('<p id="dvCountDown">You will be redirected after <span id = "lblCount"></span> seconds.</p>');
function DelayRedirect() {
var dvCountDown = document.getElementById("dvCountDown");
var lblCount = document.getElementById("lblCount");
dvCountDown.style.display = "block";
lblCount.innerHTML = seconds;
setInterval(function () {
seconds--;
lblCount.innerHTML = seconds;
if (seconds == 0) {
dvCountDown.style.display = "none";
window.location = newPath;
}
}, 1000);
}
DelayRedirect()
</script>
</html>
이 코드를 사용하십시오 :
<meta http-equiv="refresh" content="0; url=https://google.com/" />
주의하십시오 : 헤드 태그에 넣으십시오.
당신은 자바 스크립트에서 할 수 있습니다 :
location = "url";