サイトルートよりも1レベル深いサブドメインの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を実際に提供したいディレクトリに変更するだけです。