유지 관리 페이지로 .htaccess 리디렉션


-2

온라인으로 사이트를 업그레이드하고 싶습니다. 업그레이드가 완료 될 때까지 방문자 유지 보수 페이지를 표시하고 싶습니다.

나는이 코드를 시도

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_HOST} !^888\.888\.888\.888

RewriteRule $ /maintenance.html [R=302,L]

그러나이 코드는 모든 페이지를 maintenance.html로 리디렉션합니다.

www.domain.com maintenance.html로 이동 www.domain.com/sub/ maintenance.html로 이동

하위 디렉토리가 아닌 루트 디렉토리 리디렉션 만 원합니다.

www.domain.com에서 maintenance.html

www.domain.com/sub에서 www.domain.com/sub로

누구든지 나에게 제안을 해줄 수 있습니다.


모든 URL에서 RewriteRule- '$'일치를 수정하십시오. '/ $'또는 '/(?:index\.php|index\.html)?$를'사용
kupson

답변:


1

아마도 당신은 어떤 OS, 어떤 웹 서버 및 어떤 오류 번호를 언급하는 것을 잊어 버렸습니다. 우분투 리눅스 용이라면 왜 쉽게 할 수있을 때 어려운 방법을 선택 ErrorDocument합니까?

가능하다면 이것을 시도하십시오

mkdir /var/www/errors
cd /var/www/errors
#Create your own error document pages with some message or directly copy or use your "maintenance" page
touch 503_error.html 404_error.html

vim /etc/apache2/apache2.conf
#Add the following in this file
Alias /errors /var/www/errors
ErrorDocument 404 /errors/404_error.html
ErrorDocument 503 /errors/503_error.html

Save & Quit
/etc/init.d/apache2 restart

0

RewriteRule 앞에이 줄을 추가하면 서버의 기존 디렉토리로 직접 이동하는 방문자를 무시해야합니다.

RewriteCond %{REQUEST_FILENAME} !-d

0

이를 관리하는 가장 쉬운 방법은 RewriteRule리디렉션하려는 URI 와만 일치 하도록 변경하는 것 입니다. 이 경우 양쪽 끝에 고정하십시오.

RewriteRule ^$ /maintenance.html [R=302,L]

위의 규칙은 위에있는 % {REQUEST_URI} RewriteCond의 필요성을 무효화합니다. 이것이 .htaccess파일이 아닌 기본 구성에 배치되는 경우 다음과 같아야합니다.

RewriteRule ^/$ /maintenance.html [R=302,L]

.htaccess파일 에서이 작업을 수행하려고 하므로 RewriteRule지시문 과 일치하는 패턴에 슬래시가 포함되지 않습니다. 이것은 당신이 이것을 할 때 다음을 의미합니다 :

RewriteRule $ /maintenance.html [R=302,L]

Location:헤더는 사용자로 전송됩니다

Location: http://www.example.com//maintenance.html`

도메인 뒤의 이중 슬래시에 유의하십시오. 이것은 중요하지 않으며이 경우 본질적으로 미학적이지만 확실히 문제를 일으킬 수 있습니다. 가장 좋은 방법 :

RewriteRule ^$ maintenance.html [R=302,L]

아니면 이거:

RewriteRule ^$ http://www.example.com/maintenance.html [R=302,L]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.