Vra

Ek gebruik .htaccess en mod_rewrite om te verwys na lêers wat agter die DocumentRoot woon. My lêergidsstruktuur lyk soos volg:

home/
    webroot/
    other_files/

Ek het 'n .htaccess lêer in Webroot met die volgende inhoud:

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

As ek probeer om toegang te verkry http://example.com/file.html Ek ontvang die volgende fout:

  

Die gevraagde URL /home/other_files/file.html is nie gevind nie op hierdie bediener.

Is dit selfs moontlik om lêers wat agter die DocumentRoot laai? Indien wel, kan iemand wys my in die regte rigting?

Was dit nuttig?

Oplossing

Ek glo wat jy nodig het om 'n artikel te voeg met

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

om jou bediener verstellings voordat apache sal in staat wees om iets te dien van dit. Vir 'n voorbeeld, my DocumentRoot is / var / www maar daar is hierdie artikel in die verstek beskikbaar site:

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>

Jy kan dan herskryf 'n URL te gaan na / doc / en die bediener sal weet waar om die lêers te kry uit.

Ander wenke

Net sodat jy weet hoekom die reël nie werk nie:

Die rede dat dit nie in staat is om te herskryf om /home/other\_files/file.html is dat mod_rewrite is die ontleding van die pad as /home/webroot/home/other\_files/file.html sedert vanaf oogpunt mod_rewrite se die voorafgaande streep is gelykwaardig aan jou dokument wortel van /home/webroot.

Ryan Ahearn se voorstel is 'n ordentlike een, en is waarskynlik die roete wat jy wil om te gaan.

Die krediet gaan aan Ryan Aheam, maar ek gaan dit uit te spel. Ek is 'n beginner en selfs met antwoord Ryan se het ek om te eksperimenteer met 'n paar dinge om die sintaksis reg te kry.

Ek wou my DocumentRoot om my CakePHP gids wees. Maar dan het ek 'n Mantis Bug tracker dit was net gewone PHP en so nie in die CakePHP gids. Die die lêers hieronder Ek het die volgende werk.

http://www.my_website.com : bedien deur / var / www / CakePHP

http://www.my_website.com/mantisbt : bedien deur / var / www / html / mantisbt

Lêer /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>

Lêer /var/www/cakephp/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^mantisbt/?$   /mantisbt/  [NC,L]
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top