2008-08-12 14 views
12

私は.htaccessmod_rewriteを使ってDocumentRootの背後にあるファイルを指しています。マイフォルダ構造は次のようになります。ModRewriteがDocumentRootの背後にあるファイルを読み込んでいます

The requested URL /home/other_files/file.html was not found on this server.

:私は、私は次のエラーが表示され http://example.com/file.htmlにアクセスしようとした場合

 
RewriteEngine on 
RewriteRule ^(.*)$ /home/other_files/$1 

home/ 
    webroot/ 
    other_files/ 

は、私は以下の内容をWebルートで .htaccessファイルを持っています

DocumentRootの背後にあるファイルを読み込むことは可能ですか?もしそうなら、誰かが私を正しい方向に向けることができますか?

答えて

11

私はあなたがApacheがそれから何かを提供することができます前に、サーバー構成に

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

のセクションを追加する必要があります信じています。例えば、私のDocumentRootのはは/ var/WWWのですが、デフォルト利用できるサイトで、このセクションがあります:あなたはその後、URLを書き換えることができ

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> 

は/ DOCに行く/および取得する場所をサーバが知っているだろうがからのファイル。 /home/other\_files/file.htmlに書き換えることができないという理由はmod_rewriteのは、ビューのmod_rewriteの者の視点からするので /home/webroot/home/other\_files/file.htmlとして、先行するスラッシュをパスを解析していることである

:ちょうどそのルールが動作しない理由を知っているので

+0

素敵な答え!ありがとうございました –

+0

私はセクションなしでDocumentRootの外のディレクトリにエイリアスを試みました... – Pere

0

ドキュメントルートの/home/webrootに相当します。

Ryan Ahearn's suggestionはまともなものであり、行きたいルートです。

0

賞金はRyan Aheamになりますが、私はそれを書き出します。私は初心者ですが、Ryanの答えでも、構文を正しく理解するためにいくつかのことを試していました。

DocumentRootを自分のcakephpディレクトリにしたかったのです。しかし、その後、私はちょうど普通のPHPだったので、cakephpディレクトリにはないMantis Bugトラッカーがありました。私は以下のファイルがあります。

http://www.my_website.com:は/ var/www /のcakephpので

http://www.my_website.com/mantisbtを務め:

Alias /mantisbt/ "/var/www/html/mantisbt/"                   
<Directory "/var/www/html/">                       
    AllowOverride All                        
</Directory>                           

<VirtualHost *:80>                         
    ServerAdmin [email protected]_email.com                    
    DocumentRoot /var/www/cakephp                     
    ServerName my_website.com                      
    <Directory /var/www/cakephp/>                     
     AllowOverride All                       
    </Directory>                          
</VirtualHost> 
ある/etc/httpd/conf/httpd.conf/var/www/htmlと設定/ mantisbt

ファイルで提供

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

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^mantisbt/?$ /mantisbt/ [NC,L] 
    RewriteRule ^$ webroot/ [L] 
    RewriteRule (.*) webroot/$1 [L] 
</IfModule> 
関連する問題