Frage

Ich bin mit .htaccess und mod_rewrite auf Dateien, die sich hinter die DocumentRoot-Anweisung.Meine Ordner Struktur sieht wie folgt aus:

home/
    webroot/
    other_files/

Ich habe eine .htaccess Datei im webroot mit folgenden Inhalt:

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

Wenn ich versuche, auf http://example.com/file.html Ich erhalte den folgenden Fehler:

Die angeforderte URL /home/other_files/file.html wurde nicht auf diesem server.

Ist es überhaupt möglich, um Dateien zu laden, die hinter die DocumentRoot-Anweisung?Wenn ja, kann mir jemand zeigen in die richtige Richtung?

War es hilfreich?

Lösung

Ich glaube, Sie müssen fügen Sie eine Sektion mit

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

Ihrer server-Konfiguration, bevor der apache wird in der Lage sein, zu dienen, nichts von Ihr.Für Beispiel, mein DocumentRoot /var/www, aber es gibt in diesem Abschnitt werden die Standard-Website verfügbar:

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>

Sie könnten dann umschreiben einer URL gehen /doc/ und der server würde wissen, wo man sich die Dateien aus.

Andere Tipps

Nur damit Sie wissen, warum diese Regel nicht funktioniert:

Der Grund, dass es nicht in der Lage zu umschreiben /home/other\_files/file.html ist, dass mod_rewrite in der Analyse der Pfad als /home/webroot/home/other\_files/file.html da von mod_rewrite Sicht der vorhergehenden slash ist equivelant zu Ihrem Dokument-root von /home/webroot.

Ryan Ahearn Vorschlag einen anständigen, und wahrscheinlich ist die route, die Sie gehen wollen.

Die Gutschrift geht an Ryan Aheam, aber ich werde spell it out.Ich bin ein Anfänger und sogar mit Ryans Antwort musste ich Experimentieren Sie mit ein paar Dinge, um die syntax richtig.

Ich wollte mein DocumentRoot-Anweisung, um meine cakephp-Verzeichnis.Aber dann hatte ich eine Mantis Bug tracker das war nur regelmäßig php und so nicht in der cakephp-Verzeichnis.Der Dateien unten habe ich die folgenden arbeiten.

http://www.my_website.com :serviert von /var/www/cakephp

http://www.my_website.com/mantisbt :serviert von /var/www/html/mantisbt

Die Datei /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>

Die Datei /var/www/cakephp/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^mantisbt/?$   /mantisbt/  [NC,L]
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top