Mod-Herskryf laai lêers agter die DocumentRoot
-
08-06-2019 - |
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?
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>