2013-09-26 2 views
0

여기에 몇 가지 질문이 있습니다. 이렇게 정리해도 안되는 것을 용서해주십시오. 다른 사람이 루트 만 방문하면 서브 디렉토리 (메인 사이트)를 표시하고 나머지는 나머지를 표시하고 싶습니다. 사이트의 정상적인 상태로 남아 있습니다.htaccess 하위 디렉토리가 루트 디렉토리

구조는 다음과 같습니다 나는 또한 mainsite 지수가되면 작동하도록 mainsite 인덱스 페이지 (../../globalcss/global.css)에 상대적 CSS 링크를 얻으려고

www.mysite.com 
    --globalcss 
    --sites--mainsite--index.php 
        --anotherpage.php 
        --css--style.css 
     --anothersite 
     --anothersite 

루트에 표시. 한 번은 페이지가 작동했지만 CSS 링크가 을 무시하고 sites/mainsite/globalcss/으로 잘못 표시되었습니다. 가능한 한 내 로컬 호스트 루트가 일치하지 않기 때문에 상대 경로를 유지하고 싶습니다. 여기

내가 지금까지 무엇을 가지고 :

RewriteEngine on 
# attempting to get only requests in the root directory 
RewriteCond %{REQUEST_URI} !(sites|globalcss) 
# show the mainsite content instead 
RewriteRule ^(.*)$ /sites/mainsite/$1 [L] 

감사합니다 그래서 "사람은 루트 방문"에 의해

+0

[나는 매우 당신이 티와 같은 것으로 그것을 변경하는 것이 좋습니다 것이 s.] (http://stackoverflow.com/questions/18862739/inconsistency-when-switching-between-development-to-live-server/18863056#18863056)이 방법으로 당신은 당신이 가지고있는 것의 더 가까운 버전을 갖게 될 것입니다. 라이브 서버가 작동하도록 별칭 도메인을 가지며 위의 문제가 발생하지 않습니다. – Prix

+0

팁 @Prix 주셔서 감사하지만 여러 PC에 걸쳐 xampp 인스턴스 하나가있는 dropbox를 실행 중입니다. 동기화의 혜택은 내가 지금 가지고있는 문제보다 중요합니다. – John

+0

XAMP의 인스턴스를 여러 개 만들 필요는 없습니다. 하나의 인스턴스에서이 작업을 수행 할 수 있습니다. 구성 방법에 따라 새로운 가상 호스트를'vhosts.conf' 또는'httpd.conf' 파일에 추가하면됩니다. – Prix

답변

1

을, 당신이 http://www.mysite.com/, 그리고 http://www.mysite.com/anotherpage.php을 의미 가정합니다.

RewriteEngine on 
RewriteCond %{REQUEST_URI} !globalcss 
RewriteCond %{REQUEST_URI} !^/sites/mainsite 
RewriteRule ^$ /sites/mainsite/ [L] 

는 당신이 실제로 무엇을 참조하는 경우에 같은 하위 디렉토리되지 않습니다 : : 그 다음 그렇다면 http://www.mysite.com/ 괜찮는, 다음 규칙 요구 http://www.mysite.com/a-file.php 괜찮습니다,하지만 http://www.mysite.com/css/는 다시 쓰지 않아야 모양은 다음과 같습니다 :

RewriteRule ^([^/]*)$ /sites/mainsite/$1 [L] 

다른 모든 항목은 같습니다. 당신이 당신의 정규식 설정을 가지고

방법은 :

RewriteRule ^(.*)$ /sites/mainsite/$1 [L] 

는 "globalcss"를 제외한 모든 것을 다시 작성합니다. 그리고 귀하의 요청에 따라 "사이트의 나머지는 정상적으로 유지됩니다."라고 전혀 짐작하지 않는 것 같습니다.


유일한 방법은 루트가 아닌 원래 위치로 상대 찾고 나의 사이트/mainsite/CSS는 지금, 작동하지 않는 것입니다. 이 문제를 어떻게 해결할 수 있습니까? 나는 또한 js 폴더를 가지고 있는데, 같은 문제가 있다고 가정한다.

브라우저는 루트와 관련이있다. 이 알고있는 모든 입니다 "나는 여기 : http://mysite.com/ 내가 링크 "css/some_file.css"를 참조, 그래서이 할 수있는 유일한 것은 http://mysite.com/css/some_file.css로 이동되고, 브라우저는 서버에있는 모든 재 작성 또는 별칭의 아무것도 알고

.

당신이 액세스 얻을 CSS를 할 수 있도록하려면, 당신은 (이것은 정말 끔찍한이 모든 일의 방법이다) 그뿐만 아니라에 대한 규칙이 필요합니다 아마

RewriteEngine on 
RewriteCond %{REQUEST_URI} !globalcss 
RewriteCond %{REQUEST_URI} !^/sites/mainsite/css 
RewriteRule ^css/(.*)$ /sites/mainsite/css/$1 [L] 

또한 JS 비슷한

+0

이것은 작동합니다 (맨 위 섹션), 유일한 것은 내 사이트/mainsite/css는 현재 작동하지 않습니다. 원래 위치가 아닌 루트를 기준으로합니다. 이 문제를 어떻게 해결할 수 있습니까? 나는 또한 js 폴더를 가지고 있는데, 나는 같은 문제가 있다고 가정한다. – John

+1

@ 존 모든 연결하는 방법에 따라 달라집니다, 브라우저는 서버에서 무슨 일이 일어나고 있는지, 단지 HTML을보고 요청을 보냅니다 –

+0

마지막 다시 쓰기 규칙이 작동하지 않았지만이를 추가했습니다 :'RewriteCond % {REQUEST_URI}!^css /(.*)$'. 이제 같은 디렉토리에있는 images 폴더에서 동일한 문제가 발생했습니다. 어떻게 추가 할 수 있고, 똑같은 것을 시도하고, 다른 라인을 추가하고, '이미지'를 'css'로 교체 할 수는 있지만 행운은 없습니다. 이미지에는 하위 폴더가 있기 때문에 생각합니다. 하나의 규칙을 제외시킬 수있는 방법이 있습니까 : images | js | css | php 하위 폴더? – John

관련 문제