문제

확인. 따라서 두 개의 다른 도메인을 통해 액세스 할 수있는이 사이트를 구축하고 있습니다. 따라서 .htaccess에서 rewritebase를 사용할 수 없습니다. 이 문제를 해결하는 데 사용하는 규칙 (아래)은 잘 작동하는 것 같습니다. 그러나 클린 URL (WAMP)이있는 로컬 상자의 아래 .htaccess 설정을 사용하면 모두 잘 작동하지만 라이브 서버 (공유 호스팅 램프)에서 사용하는 순간은 홈 페이지 ( 브라우저의 URL이 명확하게 업데이트되고 있지만 인덱스 아래에 있습니다.

<IfModule mod_rewrite.c>
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} ^/domain1.com/(.*)$
  RewriteRule ^(.*)$ /domain1.com/index.php?q=$1 [L,QSA]

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} ^/domain2.com/(.*)$
  RewriteRule ^(.*)$ /domain2.com/index.php?q=$1 [L,QSA]
</IfModule>

모든 도움이나 아이디어는 대단히 감사합니다.

  • 루크
도움이 되었습니까?

해결책

아마도 가장 좋은 방법은 로컬 박스의 문제를 재현하고 rewriteloglevel을 올리려면 무슨 일이 일어나고 있는지 확인하는 것입니다. (일반적으로 공유 호스팅에서 로그 레벨을 변경할 수 없으므로)

Apache 기본 구성에서 디렉토리를 다시 작성하여 문제를 "시뮬레이션"할 수 있습니다. (공유 호스팅은 분명히 .htaccess에 도달하기 전에 자체 재 작성을 수행합니다!) 문제를 재현 할 수 없다면 원격 서버에서 시행 착오 디버깅을 시작해야 할 수도 있습니다. 이것은 추악하지만 유일한 선택이라면 :

R (Redirect) 플래그를 사용하여 다시 작성한 URL을 브라우저로 다시 보냅니다. Telnet (또는 적절한 브라우저 애드온)을 사용하여 HTTP 응답을 검사하십시오.

Regexes에서 점들을 탈출하는 것을 잊지 마십시오!

참고로, 재 작문 패턴은 그 위의 재 작성기 전에 일치합니다. 이런 종류의 설정은 아마도 성능에 더 좋을 것입니다.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/domain1\.com/(.*)$ /domain1.com/index.php?q=$1 [L,QSA]
#                     ^ should be escaped

나는 이것을 테스트하지 않았다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top