htaccess에서/the/else/else를 할 수 있습니까?
-
22-07-2019 - |
문제
하위 도메인을 기반으로 특정 콘텐츠를 제공하는 사이트가 있습니다. 따라서 동일한 파일 세트이며 사이트 페이지의 헤더 및 일부 정보는 하위 도메인을 기반으로 변경됩니다.
하위 도메인을 기반으로 다른 htpassword 인증이 있어야하지만 htaccess에서 if/유형의 일을 수행하는 방법에 대한 정보를 찾을 수 없습니다.
기본적으로 내가 필요한 것은 다음과 같습니다.
subdomain = 'abc'이 htpassword 파일을 사용하는 경우
subdomain = 'def'인 경우이 htpassword 파일을 사용하십시오.
이 작업을 수행 할 수 있습니까?
해결책
다음과 같은 것을 시도하십시오.
SetEnvIf Host ^abc\. HOST_ABC
SetEnvIf Host ^dev\. HOST_DEF
<IfDefine HOST_ABC>
AuthUserFile …
</IfDefine>
<IfDefine HOST_DEF>
AuthUserFile …
</IfDefine>
다른 팁
어떤 웹 서버를 사용하고 있습니까?
여러 다른 서버에서 작동 할 수있는 기술 (Apache에서 확실히 작동)은 각 하위 도메인에 해당하는 디렉토리에 다른 .htaccess 파일을 갖는 것입니다.
만약 그것이 나라면 (그리고 나는 전에 이것을 생각하지 않았다) 나는 다음과 같습니다.
- 내부 리디렉션 사용을 사용하십시오 mod_rewrite 일부 요인에 따라 다른 사이트 루트 (/suba 또는/subb)에
- 사용 Symlinks 공개 디렉토리에서는 .htaccess는 아닙니다
그래서:
/sites/subdomain_a/.htaccess
/sites/subdomain_a/pub
/sites/subdomain_b/.htaccess
/sites/subdomain_b/pub
어디
/sites/subdomain_a/pub == /sites/subdomain_b/pub
사용
ln -s
또는 유사합니다. 그런 다음 mod_rewrite를 사용하여 올바른 사이트 루트로 (내부) 리디렉션하십시오. 나 생각한다 mod_rewrite가 .htaccess가로드되기 전에 실행됩니다.
즉, 하위 도메인에 따라 다른 .htaccess로 동일한 사이트 파일을 효과적으로 제공한다는 것을 의미합니다.
이것이 도움이되기를 바랍니다.
더 나은 것이 존재하는지 확인하는 데 관심이있을 것입니다.
htaccess는 지침 목록이 아니기 때문에 if/else를 사용할 수 없습니다. 그러나 조건부 블록을 사용하는 경우u003CIfModule mod_rewrite.c> 또는u003CIfDefine something> , 당신은 어떤 하위 도메인을 요청하는지에 따라 다른 지시문을 사용할 수 있습니다. 나는 당신이 어느 것을 사용할 것인지 잘 모르겠습니다 ...
파일 위에 하나의 .htaccess 파일 하나를 넣고 사용 할 수도 있습니다.u003CDirectory something> 각 하위 도메인에 대해 다른 규칙을 지정하려면 하위 도메인 디렉토리를 공유 파일과 동일한 디렉토리에 동일한 디렉토리로 만들 수 있습니다.
따라서 이것은 웹 루트 위의 디렉토리입니다.
.htaccess
SiteFiles
subdomain1 (symlink to sitefiles)
subdomain2 (symlink to sitefiles)
...