**아래 업데이트 참조*****
내 기본 도메인 사이트는 내 서버의 도메인과 동일한 이름의 하위 디렉터리에서 제공되므로 내 webroot .htaccess의 지저분한 블록을 읽는 것이 혼란스러울 수 있습니다.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# remove www
RewriteCond %{HTTP_HOST} ^www\.(.+)$
RewriteRule ^.*$ %1 [NC,QSA,R=301]
#RewriteCond %{ENV:REDIRECT_STATUS} . [OR]
RewriteCond %{HTTP_HOST} ^(www\.)?my\-web\.agency$
RewriteRule ^my-web.agency/ - [L,R=404]
RewriteRule !^my-web.agency/ my-web.agency/%{REQUEST_URI} [NC,QSA]
</IfModule>
나는 오랫동안 그 일을 해왔고, 규칙을 바꾸고 그 맹글이 내가 현재 하고 있는 일이 되도록 구조화해 왔습니다.
www. 그대로 유지하세요. 제거하는 비트는 완전히 효과가 없습니다.
!^my-web.agency/ 규칙은 실제로 웹사이트를 효과적으로 제공합니다. 그러나 하위 디렉터리가 URI에 포함되어 있으면 404를 렌더링하려는 다음 시도가 실패합니다.
이 모든 것을 바로잡는 방법을 나에게 설명해주세요. 문서를 읽고 배우고 알아내려고 노력하고 있지만 왠지 그럴 수 없고 이미 많은 시간을 투자했습니다. 정말 멈춰야 합니다. 도와주세요. 항상 감사하겠습니다. 배우고 주의깊게 살펴보세요. 정말 감사합니다.
*****업데이트:** 이제
# remove www, externally for consistent domains (successful)
RewriteCond %{HTTP_HOST} ^www\.(.+)$
RewriteRule .* http://[[percent]]1/$0 [NS,L,R=301,QSA]
RewriteCond %{HTTP_HOST} ^(www\.)?my\-web\.agency$
RewriteCond %{REQUEST_URI} ^my-web.agency
RewriteRule ^(.*)$ - [R=404,L,NC]
RewriteCond %{HTTP_HOST} ^(www\.)?my\-web\.agency$
RewriteCond %{REQUEST_URI} !^my-web.agency
RewriteRule ^(.*)$ /my-web.agency/$1 [L,NC,QSA]
그것은 효과적으로 www를 만듭니다. 시도하면 사라집니다. 그러나 모든 내부 링크에는 숨겨져 있어야 하는 하위 디렉터리가 여전히 포함되어 있습니다(예: 내부 링크는 "http://my-web.agency/my-web.agency/somepage"), URI의 하위 디렉터리가 있는 페이지에 액세스하는 것은 여전히 작동합니다. 차라리 404를 반환하고 싶습니다.
DocumentRoot 또는 RewriteBase는 적절한 구현을 알아낼 수만 있다면 논리적으로 가능한 솔루션인 것 같습니다. ( [[percent]]
첫 번째 RewriteRule에서 계속되는 http://는 오류 없이 편집기를 통과할 수 있도록 허용하는 것입니다. 단순히 을 나타냅니다 %
.)