Question

Je suis à l'aide d' .htaccess et mod_rewrite pour pointer vers les fichiers qui se trouvent derrière le DocumentRoot.Mon dossier structure ressemble à ceci:

home/
    webroot/
    other_files/

J'ai un .htaccess fichier dans la racine de votre site avec le contenu suivant:

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

Si j'essaie d'accéder à http://example.com/file.html Je reçois l'erreur suivante:

L'URL demandée /home/other_files/file.html n'a pas été trouvée sur ce serveur.

Est-il même possible de charger des fichiers qui sont derrière le DocumentRoot?Si oui, quelqu'un peut me pointer dans la bonne direction?

Était-ce utile?

La solution

Je crois que vous avez besoin d'ajouter une section avec des

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

pour la configuration de votre serveur avant de apache sera en mesure de servir quelque chose de lui.Pour un exemple, mon DocumentRoot /var/www mais il y a cette section dans la valeur par défaut disponible sur les sites:

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>

Vous pouvez ensuite réécrire une URL pour aller à /doc/ et le serveur de savoir où obtenir les fichiers de.

Autres conseils

Juste pour que vous sachiez pourquoi cette règle ne fonctionne pas:

La raison qu'il n'est pas en mesure de réécrire /home/other\_files/file.html est que le mod_rewrite est de l'analyse du chemin /home/webroot/home/other\_files/file.html depuis de mod_rewrite point de vue de la barre oblique est équivalente à la racine du document de /home/webroot.

Ryan Ahearn la suggestion de est un bon un, et est probablement la de l'itinéraire que vous voulez aller.

Le crédit va à Ryan Aheam, mais je vais le préciser.Je suis un débutant, et même avec Ryan réponse que j'ai eu à essayer quelques choses pour obtenir la syntaxe de droit.

Je voulais que mon DocumentRoot à mon cakephp répertoire.Mais ensuite, j'ai eu un Mantis Bug tracker, qui vient d'être régulier php et donc pas dans la cakephp répertoire.Les fichiers ci-dessous, j'ai la suite de travail.

http://www.my_website.com :servi par /var/www/cakephp

http://www.my_website.com/mantisbt :servi par /var/www/html/mantisbt

Fichier /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>

Le fichier /var/www/cakephp/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^mantisbt/?$   /mantisbt/  [NC,L]
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top