提前感谢您的帮助。
这就是我在哪里以及我想要实现的目标:
我正在尝试在.htaccess文件中使用以下内容(我无法访问httpd.conf):
RewriteRule ^(static/.*)$ /home/username/code/project/static/ [L]
但如果我正确理解mod_rewrite的文档(见下文),“/ home / username / code / project / static /”将被视为相对于我的文档根目录的文件系统路径或URL路径,而不是作为我想要的绝对文件系统路径。
我尝试使用“〜/ code / project / static /”和“../code/project/static/”,但在尝试访问我的页面时出现内部服务器错误(是的,我有点一个菜鸟。
所以我的问题是:有没有办法将.htaccess上下文中使用的重写规则替换为绝对文件系统路径而不是相对于我的DocumentRoot的路径?
以下是mod_rewrite文档的摘录以供参考(可在此处完整地找到:http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule):
例如,如果您指定/www/file.html的替换字符串,那么这将被视为URL路径,除非名为www的目录存在于根目录或您的文件系统(或者,如果在.htaccess文件中使用重写,相对于您的文档根目录,在这种情况下,它将被视为文件系统路径。
任何帮助将不胜感激:)
谢谢!
答案 0 :(得分:2)
完成您要做的事情的一种方法是在public_html中创建一个将static
指向/home/username/code/project/static/
的符号链接。这需要Options Directive documentation中详细说明的FollowSymlnks
选项,但可能不允许在完全Apache配置中,这是您无法控制的。
更好的方法是反转链接 - 将public_html / static设置为保存真实文件,然后将/ home / username / code / project / static设置为public_html / static的符号链接。这避免了对特定.htaccess规则的任何需要。由于您似乎想要公开访问该目录下的文件,因此它在安全方面也更好,因为它将公共可访问文件保存在相同的目录结构下,并避免因允许符号链接而产生的潜在安全问题从Web根目录到文件系统的其他区域。