Mod_rewrite - 이러한 재작성 규칙이 작동합니까?

Mod_rewrite - 이러한 재작성 규칙이 작동합니까?

도와주세요. 다음 재작성을 수행하기 위한 올바른 코드인지 알려주실 수 있나요? 내가 원하는 대로 이 특정 변경 사항을 테스트할 수 없습니다.

이 회사는 단일 Apache 인스턴스에 4개의 도메인을 가지고 있습니다.

test.example.com 중 하나만 영향을 미치고 싶습니다.

다음을 수행하려면 이 블록이 필요합니다.

  1. 호스트가 test.example.com인 경우 /에 대한 모든 호출은 /admin/index.php로 이동해야 합니다.
  2. 호스트가 test.example.com인 경우 http에 대한 모든 호출은 https로 이동해야 합니다.
    
    RewriteEngine 켜기
    재작성베이스 /
    RewriteCond %{HTTP_HOST} !^test\.example\.com
    RewriteRule ^/admin/index\.php$ - [L]

    RewriteCond %{HTTP_HOST} !^test\.example\.com
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /admin/index.php [L]

    RewriteCond %{HTTP_HOST} !^test\.example\.com
    RewriteCond %{HTTPS} 꺼짐
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
        

정말 고마워요, 린

업데이트:

이런 건 어때요?

RewriteCond %{HTTP_HOST} !^test\.lifestylepubs\.com
RewriteCond %{HTTPS} 꺼짐
RewriteRule (.*) https://%{HTTP_HOST}$1
RewriteRule ^/$ /admin/index.php

답변1

Apache 서버가 4개의 도메인을 제공하는 경우 각 도메인이 자체 가상 호스트에 있다고 가정합니다. 그렇지 않다면 그것이 내가 가장 먼저 고칠 것입니다.

그런 다음 재작성 규칙을 적절한 가상 호스트 구성에 넣을 수 있으며 크게 걱정할 필요가 없습니다.

그렇지 않으면 재작성 규칙에 다음이 필요합니다.

RewriteCond %{SERVER_NAME}       =test.example.com
RewriteRule  ^/$                 /admin/index.php [L]

RewriteCond %{SERVER_NAME}       =test.example.com        
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}$1

관련 정보