사이트 루트보다 한 수준 더 깊은 하위 도메인 의 URL을 사용하여 디렉토리에서 자동 로드를 발생시키기 위해 ... 에서 사용하려는 작업에 대해 확실히 도움을 받을 수 있습니다 RewriteRule
..htaccess
sharpedge.
Internet_IE
나는 이것을 가지고있다 httpd.conf
:
[snip]
NameVirtualHost 11.22.33.44
<VirtualHost 11.22.33.44>
Options All +ExecCGI
ServerAdmin [email protected]
DocumentRoot /var/www/html/ourdomain.com
ServerName ourdomain.com
ServerAlias www.ourdomain.com
DirectoryIndex index.htm index.html index.dna
#---------------------------------
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
</IfModule>
#---------------------------------
</VirtualHost>
<VirtualHost 11.22.33.44>
Options All +ExecCGI
ServerAdmin [email protected]
DocumentRoot /var/www/html/ourdomain.com
ServerName sharpedge.ourdomain.com
DirectoryIndex index.htm index.html index.dna
#---------------------------------
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
</IfModule>
#---------------------------------
</VirtualHost>
[snip]
...이것은 .htaccess에 있습니다(사이트 루트, 여기: /var/www/html/ourdomain.com/).
Options -Indexes
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^sharpedge\.ourdomain\.com$
# years ago this next line was used here, but in httpd.conf: (I don't know what it was supposed to do)
# RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^sharpedge\.ourdomain\.com(.*) /var/www/html/ourdomain.com/Internet_IE/$1 [L]
</IfModule>
..하지만 RewriteRule에서는 아무 일도 일어나지 않습니다. 마치 RewriteRule이 존재하지 않는 것 같습니다.
어떤 제안이라도 주시면 매우 감사하겠습니다.
편집하다:
/
방금 DocumentRoot를 실제로 제공하려는 디렉터리로 변경했지만 해당 디렉터리의 파일에서 파일을 호출(포함)하고 사이트 루트에 있는 파일에 포함 경로 접두어를 붙일 수 있어야 합니다 . 이러한 파일은 사이트 루트의 다른 파일에서도 유사하게 호출할 수 있습니다.
답변1
이렇게 했습니다:
RewriteCond %{HTTP_HOST} ^sharpedge\.ourdomain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/Internet_IE/
RewriteRule ^(.*)$ /Internet_IE/$1 [L]
답변2
이에 대한 규칙을 다시 작성할 필요는 없습니다. DocumentRoot를 실제로 제공하려는 디렉터리로 변경하기만 하면 됩니다.