하위 디렉토리를 내 기본 도메인의 public_html 역할로 만들고 해당 도메인 하위 디렉토리에서도 작동하는 솔루션을 얻는 데 문제가 있습니다.
내 호스팅을 사용하면 여러 사이트를 호스팅할 수 있으며 모두 훌륭하게 작동합니다. 내 폴더 아래에 하위 폴더를 설정했습니다.~/public_html/호출된 디렉토리/도메인/, 여기에 각각의 개별 웹사이트에 대한 폴더를 만듭니다. 예를 들어
- public_html
- 도메인
- 웹 사이트 하나
- 웹 사이트 2
- 웹사이트세
- ...
- 도메인
이렇게 하면 내 사이트가 깔끔하고 깔끔하게 유지됩니다. 유일한 문제는 내 "기본 도메인"을 이 시스템에 맞추는 것이었습니다. 내 기본 도메인이 어떻게든 내 계정(또는 Apache 등)에 연결되어 있는 것 같아서 이 도메인의 "문서 루트"를 변경할 수 없습니다. cPanel에 추가하는 다른 도메인("애드온 도메인")에 대한 문서 루트를 문제 없이 정의할 수 있습니다. 그러나 주요 도메인은 다릅니다.
.htaccess 파일을 편집하여 기본 도메인을 하위 디렉터리로 리디렉션하라는 지시를 받았습니다. 이것은 훌륭하게 작동하는 것 같았고 내 사이트는 홈/색인 페이지에서 잘 작동합니다.
내가 겪고 있는 문제는 브라우저를 탐색하여 기본 사이트의 이미지 폴더(예를 들어)를 다음과 같이 말하려고 하면 다음과 같다는 것입니다.
www.yourmaindomain.com/images/
그런 다음 리디렉션을 무시하고 다음과 같이 URL에 전체 서버 디렉토리를 표시합니다.
www.yourmaindomain.com/domains/yourmaindomain/images/
실제로는 여전히 올바른 "/이미지 인덱스" 페이지가 표시되고 내 모든 이미지 목록이 표시됩니다.
다음은 제가 사용하고 있는 .htaccess 파일의 예입니다.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteCond %{REQUEST_URI} !^/domains/yourmaindomain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domains/yourmaindomain/$1
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteRule ^(/)?$ domains/yourmaindomain/index.html [L]
이 htaccess 파일이 올바르게 보입니까? 내 기본 도메인이 애드온 도메인처럼 작동하고 해당 하위 디렉터리가 리디렉션 규칙을 따르도록 만들기만 하면 됩니다.
답변1
나는 그것에 대해 불량배를 부를 것입니다 DirectorySlash
.
- 디렉토리에서만 발생합니까?
- 후행 슬래시가 없는 경우에만 발생합니까(즉 ,
/images
로 가도 괜찮습니까)?/domain/yourdomain/images/
/images/
이 경우 3가지 옵션이 있습니다.
- 모든 링크에 슬래시(
/
) 가 있는지 확인하세요. - 설정
DirectorySlash off
(SEO 관점에서는 좋지 않은 이중 페이지/디렉토리로 이동하게 됩니다). RewriteRule
마지막 항목 바로 앞에 a를 추가해 보세요index.html
. (즉석에서 생각한 것이므로 작동할지 모르겠습니다.)RewriteCond %{REQUEST_FILENAME} -d RewriteCond %{REQUEST_FILENAME} !/$ RewriteRule ^(.*) $1/
답변2
문제 중 하나는 정규식입니다.~ 아니다당신의 점을 탈출. 즉, 단순한 점이 아닌 "모든 문자"로 간주됩니다. 대신에
^(www.)?domain.tld$
당신은 가지고 있어야합니다
^(www\.)?domain\.tld$