Domanda

Sto utilizzando .htaccess e mod_rewrite per scegliere i file che si trovano dietro la DocumentRoot.La mia struttura di cartelle simile a questo:

home/
    webroot/
    other_files/

Ho un .htaccess file nella webroot con il seguente contenuto:

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

Se provo ad accedere http://example.com/file.html Ho visualizzato il seguente messaggio di errore:

L'URL richiesto /home/other_files/file.html non è stato trovato su questo server.

È anche possibile caricare i file che si trovano dietro la DocumentRoot?Se è così, qualcuno può mi punto nella giusta direzione?

È stato utile?

Soluzione

Io credo che avete bisogno di aggiungere una sezione con

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

per la configurazione del server prima di apache sarà in grado di servire qualsiasi cosa.Per un esempio, il mio DocumentRoot /var/www ma c'è questa sezione predefinita disponibile sito:

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>

Si può quindi riscrivere l'URL andare in /doc/ e il server sarebbe sapere dove prendere i file.

Altri suggerimenti

Solo così si sa perché la regola non funziona:

Il motivo è che non è in grado di riscrivere /home/other\_files/file.html è che il mod_rewrite è l'analisi del percorso /home/webroot/home/other\_files/file.html fin da mod_rewrite punto di vista la precedente slash è equivalente a la radice del documento di /home/webroot.

Ryan Ahearn suggerimento è una decente, ed è probabile che il percorso che si desidera andare.

Il merito va a Ryan Aheam, ma ho intenzione di chiarirne il significato.Sono un principiante e anche con Ryan risposta ho dovuto sperimentare con un paio di cose per ottenere la sintassi giusta.

Volevo che il mio DocumentRoot di essere il mio cakephp directory.Ma poi ho avuto un Mantis Bug tracker che era solo di regolare php e quindi non in cakephp directory.Il file elencati di seguito ho il seguente lavoro.

http://www.my_website.com :servita da /var/www/cakephp

http://www.my_website.com/mantisbt :servita da /var/www/html/mantisbt

Il File /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>

File /var/www/cake/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^mantisbt/?$   /mantisbt/  [NC,L]
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top