.htaccess를 사용하는 IP 주소 기반의 조건부 DirectoryIndex

.htaccess를 사용하는 IP 주소 기반의 조건부 DirectoryIndex

나는 이것을 가지고있다 httpd.conf:

<VirtualHost xx.xxx.xx.xxx>
    Options All +ExecCGI
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/domain.com
    ServerName  dl.domain.org
    DirectoryIndex dlindex1.html
</VirtualHost>

DirectoryIndex...잘 작동합니다( "dl.domain.org" 하위 도메인 으로 필요합니다 ).하지만DirectoryIndex이제 IP 주소를 기준으로 변경 해야 합니다 .htaccess. 이것이 가능합니까?

StackOverflow 게시물에 따르면 DirectoryIndex조건부로 설정할 수는 없지만 그 반대가 됩니다.가지다를 사용하세요 RewriteRule. 그게 사실이라면 괜찮습니다. 하지만 무엇 RewriteCondRewriteRule? 나는 다음을 포함하여 많은 것을 시도했습니다(실제 IP는 우리 개발자 2명의 IP입니다).

RewriteCond %{REMOTE_ADDR} ^111\.222\.333\.444$    [OR]
RewriteCond %{REMOTE_ADDR} ^555\.666\.777\.888$
RewriteCond %{SERVER_NAME} ^dl.domain.org
RewriteRule ^(.*)/$ $1/dlindex2.html

..또는 심지어 (절대적인 테스트로서):

RewriteCond %{REMOTE_ADDR} ^555\.666\.777\.888$
RewriteRule (.*)/dlindex1.html$ $1/dlindex2.html

하지만 내가 무엇을 시도하든 개발자 IP가 호출할 때 해당 하위 도메인의 기본 페이지로 제공되는 대신 DirectoryIndex dlindex1.html에 그대로 제공되는 것 같습니다 .httpd.confdlindex2.html

누구든지 내가 원하는 것을 달성하기 위해 내가 할 수 있는 일을 지적할 수 있습니까? 즉, ...실제로 또는 실제로 DirectoryIndexIP 주소를 기반으로 기본적으로 변경됩니까 .htaccess?

답변1

IP 주소 12.34.56.78을 /var/www/client1/*로 이동하고 IP 주소 87.65.43.21을 /var/www/client2/*로 이동한다고 가정합니다.

RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^12\.34\.56\.78$
RewriteRule (.*) /client1/$1

RewriteCond %{REMOTE_ADDR} ^87\.65\.43\.21$
RewriteRule (.*) /client2/$1

특수 페이지를 제공해야 하는 각 IP에 대해 "RewriteCond" 및 "RewriteRule" 세트를 만듭니다.

운영 분석:

  1. 클라이언트 87.65.43.21 연결
  2. 규칙은 클라이언트가 12.34.56.78인지 확인하고, 그렇지 않으면 그렇지 않습니다.
  3. 그런 다음 서버는 두 번째 조건을 입력합니다.
  4. 클라이언트가 87.65.43.21인지 확인하십시오. 예
  5. 이제 서버는 통과된 테스트 조건의 일부로 RewriteRule을 실행하고 /client2/(file_requested) 페이지를 제공합니다.

OP는 그의 질문을 명확히 했습니다. 그는 별도의 폴더가 필요하지 않지만 다른 인덱스 페이지를 제공해야 합니다. 다음은 작업을 수행하는 .htaccess 예제입니다.

RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^12\.34\.56\.78$
RewriteCond %{REQUEST_URI} index\.html$
RewriteRule .* /index-page-client1.html

RewriteCond %{REMOTE_ADDR} ^12\.34\.56\.78$
RewriteCond %{REQUEST_URI} index\.html$
RewriteRule .* /index-page-client2.html

위의 규칙은 요청된 파일이 "index.html"인지 추가로 확인합니다. "index.html"에 대한 요청만 리디렉션한다고 가정합니다.

관련 정보