13

DocumentRootの背後にあるファイルを使用.htaccessしてポイントしています。mod_rewrite私のフォルダ構造は次のようになります。

home/
    webroot/
    other_files/

.htaccess次の内容のファイルがwebrootにあります。

RewriteEngineをオンにします
RewriteRule ^(。*)$ / home / other_files / $ 1

http://example.com/file.htmlにアクセスしようとすると、次のエラーが発生します。

要求されたURL/home/other_files/file.htmlがこのサーバーで見つかりませんでした。

DocumentRootの背後にあるファイルをロードすることさえ可能ですか?もしそうなら、誰かが私を正しい方向に向けることができますか?

4

3 に答える 3

13

セクションを追加する必要があると思います

<Directory "/home/other_files">
  (options)
</Directory>

Apacheがサーバー構成から何かを提供できるようになる前に、サーバー構成に追加します。たとえば、私の DocumentRoot は /var/www ですが、デフォルトで利用可能なサイトには次のセクションがあります。

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

次に、URL を /doc/ に移動するように書き換えると、サーバーはファイルの取得元を認識します。

于 2008-08-12T04:21:54.857 に答える
1

クレジットは Ryan Aheam に帰属しますが、詳しく説明します。私は初心者で、ライアンの答えがあっても、構文を正しくするためにいくつか実験する必要がありました。

私はDocumentRoot自分のcakephpディレクトリになりたかった。cakephpしかし、その後、通常のPHPであり、ディレクトリにないMantisバグトラッカーがありました。以下のファイルには、次の作業があります。

http://www.example.com: サービス提供者 /var/www/cakephp

http://www.example.com/mantisbt: サービス提供者/var/www/html/mantisbt

ファイル/etc/httpd/conf/httpd.conf

Alias /mantisbt/ "/var/www/html/mantisbt/"                                                                          
<Directory "/var/www/html/">                                                                                        
    AllowOverride All                                                                                               
</Directory>                                                                                                        
                                                                                                                    
<VirtualHost *:80>                                                                                                  
    ServerAdmin me@my_email.com                                                                             
    DocumentRoot /var/www/cakephp                                                                                   
    ServerName my_website.com                                                                                      
    <Directory /var/www/cakephp/>                                                                                   
        AllowOverride All                                                                                           
    </Directory>                                                                                                    
</VirtualHost>

ファイル/var/www/cakephp/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^mantisbt/?$   /mantisbt/  [NC,L]
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>
于 2015-09-12T02:43:39.117 に答える
1

そのルールが機能しない理由を知っているように:

に書き換えることができない理由は、mod_rewrite の観点からは、前のスラッシュが のドキュメント ルートに相当するため、mod_rewrite/home/other_files/file.htmlがパスを解析しているためです。/home/webroot/home/other_files/file.html/home/webroot

Ryan Ahearn の提案はまともなものであり、おそらくあなたが行きたいルートです。

于 2008-08-12T21:08:45.667 に答える