내 상황이 여기에 있습니다. 나는 웹 루트와 여러 하위 디렉토리를 가지고, 이제 가정 해 봅시다 :Apache .htaccess RewriteRule
/var/www
/var/www/site1
/var/www/site2
인해 특정 제한, 나는 하나 개의 도메인을 유지하고이 같은 별도의 폴더를 가지고 할 수있는 능력이 필요합니다. 이것은 나를 위해 잘 작동하지만 두 사이트 모두에서 많은 JS 및 CSS 참조는 같은 것들을 가리 :이 파일이 절대적으로 참조되기 때문에, 그들은 'JS'와 'CSS'디렉토리를 찾고 있습니다
"/js/file.js"
"/css/file.css"
/var/www는 물론 존재하지 않습니다. RewriteRules를 사용하여 절대적으로 참조 된 파일에 대한 요청을 올바른 하위 디렉토리로 리디렉션 할 수 있습니까? 심지어 하나의 디렉토리로 리디렉션, 말할 것도없고 사이트 1과 사이트 2 모두를 처리,
RewriteEngine on
RewriteRule ^/$ /site1
또는
RewriteEngine on
RewriteRule ^/js/(.*)$ /site1/js/$1
RewriteRule ^/css/(.*)$ /site1/css/$1
그러나이 작품의도 : 내가 좋아하는 일을 시도했다. 내가 뭘 하려는지?
편집 : 솔루션
내 상황에 맞게 존의 조언을 적응 끝났다. 새 서브 디렉토리가 추가되거나 제거 될 때마다 .htaccess 파일을 프로그램 적으로 변경하는 기능이 있습니다. 내가 원하는 각 "사이트"를 위해, 나는 내 htaccess로에서 다음과 같은 부분이 있습니다
RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{REQUEST_URI} !^/index.php$
RewriteCond %{HTTP_COOKIE} sitename=site1
RewriteCond %{REQUEST_URI} !^/site1/
RewriteRule ^(.*)$ /site1/$1 [L]
Index.php는 내 모든 사이트를 나열하는 파일은 "사이트 이름"쿠키 삭제, 그리고 쿠키를 설정 특정 사이트를 선택하면 "sitename = site #"이 표시됩니다. 요청이/
- 을 확인 "/ site1 /"로 시작하지 않습니다.
이러한 조건이 모두 충족되면 요청 전에 "/ site1 /"앞에 추가되도록 요청이 다시 작성됩니다. 세 번째 조건에서 "site1"대신 (\ w +) 일치하는 Conds/Rules의 단일 집합을 가지고 시도한 다음 네 번째 조건과 규칙에서 % 1을 참조했지만 작동하지 않았습니다. 나는 이것을 포기하고 정착했다.
예,하지만 난'RewriteRule의 작업을 수행 할 때^$가/사이트 개발/$ 1 ', 그것은 내부 서버 오류를 발행 할 아파치의 원인 (*.). 하지만 나에게 그것은 마치 개인적인 규칙의 일반적인 동등한 것 같아요! – denaje
내 편집을 참조하십시오. 루핑 문제를 해결합니다. –
아, 그건 의미가 있습니다. 이것은 한 사이트에서 작동하지만 둘 이상을 지원하려면 어떻게해야합니까? 추가 조건으로 'RewriteCond % {HTTP_REFERER}/site /'를 추가하여 요청을 다시 작성하기 전에 REFERER를 확인하려고했습니다. 그러나 /page1.htm에 대한 링크를 클릭하면 내부적으로 /site/page1.htm에 다시 작성되었지만 URI로 /page1.htm이 여전히 표시되기 때문에 첫 페이지를 지나면이 작업이 수행되지 않습니다. 그러면 두 번째 링크를 클릭 할 때 REFERER가 올바르지 않으며 다시 쓰기 규칙이 적용되지 않습니다. 어떤 제안? – denaje