it-swarm-ko.tech

다중 사이트 Drupal 설치와 충돌하지 않고 중첩 된 하위 디렉터리와 심볼릭 링크를 어떻게 사용할 수 있습니까?

내 질문은 기본적으로 여기에있는 질문을 반영한 것입니다 (불행하게도 명확한 답변이 없습니다) : http://groups.drupal.org/node/20604

이것은 다중 사이트 설정에 대한 질문이 아니라 복잡한 Edge 케이스에 대한 질문입니다. 제안으로 이동하기 전에 자세히 읽어 보시기 바랍니다. 또한 더 많은 정보가 필요하면 위의 링크를 살펴보십시오.

다중 사이트는 일반적으로 잘 작동하지만이 경우는 그렇지 않습니다.

몇 가지 진실 :

  • 심볼릭 링크를 사용하고 있습니다 (정확히 RHEL5에서)
  • 나는 Drupal 6.20
  • Apache를 사용하고 있습니다.
  • 하위 디렉터리를 사용하고 있습니다 (하위 도메인이 아님, 하위 도메인으로 전환하는 것은 허용되는 대답이 아닙니다 아님 ).
  • 내 Drupal 사이트 디렉토리는 2 단계 깊이로 중첩됩니다 (예 : /campus/bus, /campus/news))
  • Drupal 사이트는 모두 /campus 디렉토리에서 동일한 코드베이스를 사용합니다.
  • Drupal 사이트는 모두 다른 (자신의) 데이터베이스를 사용합니다.

제 경우에는 수십 개의 사이트가 있지만 처음 발견 한 충돌은 다음과 같습니다. URL에는 다음과 같은 두 개의 사이트가 있습니다.

drupal.drupalsite.com/campus/bus

drupal.drupalsite.com/campus/news

sites/[foldername]에서 각 폴더는 다음과 같습니다.

drupal.drupalsite.com.campus.bus

drupal.drupalsite.com.campus.news

웹 루트의 캠퍼스 폴더에는 Drupal 설치 및 심볼릭 링크도 포함되어 있으므로 /var/www/campus에는 news -> ./, bus -> ./.

'버스'하위 사이트에서 https://drupalsite.com/campus/bus/news로 이동하려고하면 Drupal 혼란스러워집니다. 마지막 디렉토리 이후 요청의 모든 항목을 삭제하는 것 같습니다. 예 : drupalsite.com/campus/bus/news는 대신 drupalsite.com/campus/bus로 확인되고 drupalsite.com/campus/bus/news/headlines404 not found를 반환합니다.

다른 데이터 포인트의 경우 conf_path() 함수의 var_dump$dir를 입력하여 각 요청에 대해 몇 개의 디렉토리를 조회했는지 확인합니다. 버스/학부 프로그램과 같이 충돌하지 않는 URL의 경우 다음을 얻었습니다.

drupal.drupalsite.com.campus.bus

그러나 버스/뉴스/헤드 라인과 같은 충돌하는 URL의 경우

drupal.drupalsite.com.campus.bus.news
drupalsite.com.campus.bus.news
com.campus.bus.news
drupal.drupalsite.com.campus.bus

심볼릭 링크를 사용하는 방법 대신 sites.php를 통해 다중 사이트 설정을 수행 할 수있는 패치가 있지만 해킹 코어가 수반되므로 참조 용으로 사용하고 싶지는 않습니다. 여기에 있습니다 : http://drupal.org/node/231298#comment-3769752

참고로, 원본 groups.drupal.org에서 대부분의 제안을 시도했습니다. 스레드뿐만 아니라 .htaccess 및 내 httpd.conf 파일의 수많은 해킹도 소용이 없습니다. 질문에 답하기 위해 추가 정보가 필요하면 의견을 남겨주세요.

3
coderintherye

한 번만 다시 작성하고 있습니까? 이 정확한 설정이 있고 각 하위 디렉토리에 대해 별도의 재 작성으로 처리합니다. 기본 index.php 재 작성 만 사용하는 경우 경로는 404의 출처 인 drupal.drupalsite.com/index.php?q=/campus/news와 같이 기본값으로 다시 작성됩니다. 또한 심볼릭 링크 대신 서버 수준 구성에서 별칭을 사용합니다. 그것은 일을 더 깨끗하게 만듭니다. (별칭/campus/bus/var/www/html/whatever)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /campus/bus/
RewriteRule ^(.)$ /campus/bus/?q=$1  [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /campus/news/
RewriteRule ^(.)$ /campus/news/?q=$1  [L,QSA]

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

현재 하위 디렉토리에있는 설정은 약간 비표준이며 널리 지원되지 않을 수 있습니다.

당신이 이미 열광적이라는 것을 감안할 때, 작은 패치를 시도해 볼 가치가 있습니다. 특히 패치가 D7에 있기 때문에.

또는 D7로 전환 할 수 있습니다. 핵심 해커가 필요하지 않습니다.

0
Jeremy French