在DocumentRoot后面进行Mod-Rewrite加载文件
时间:2020-03-05 18:39:04 来源:igfitidea点击:
我正在使用.htaccess和mod_rewrite指向位于DocumentRoot后面的文件。我的文件夹结构如下所示:
home/ webroot/ other_files/
我在webroot中有一个.htaccess文件,内容如下:
RewriteEngine on RewriteRule ^(.*)$ /home/other_files/
如果我尝试访问http://example.com/file.html,则会收到以下错误消息:
The requested URL /home/other_files/file.html was not found on this server.
甚至可以加载DocumentRoot后面的文件吗?如果是这样,有人可以指出我正确的方向吗?
解决方案
回答
我相信我们需要添加一个部分
<Directory "/home/other_files"> (options) </Directory>
到服务器配置之前,apache将能够从中提供任何服务。例如,我的DocumentRoot是/ var / www,但是默认可用站点中有以下部分:
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>
然后,我们可以重写URL以转到/ doc /,服务器将知道从何处获取文件。
回答
只要我们知道为什么该规则不起作用:
无法将其重写为/ home / other \ _files / file.html
的原因是mod_rewrite将路径解析为/ home / webroot / home / other \ _files / file.html
,因为来自mod_rewrite的观点来看,前面的斜杠等同于/ home / webroot
的文档根目录。
瑞安·阿赫恩(Ryan Ahearn)的建议很不错,很可能是我们想走的路线。