我有一个使用绝对路径的大量资产的网站,即:
<img src=\"/_files/images/shell/logo.jpg\">
我的问题是,此网站的开发网址为:http://arraybox.net/~hazelwoodconstru/
不幸的是,这意味着它正试图访问arraybox.net/_files/images/shell/logo.jpg
而非arraybox.net/~hazelwoodconstru/_files/images/shell/logo.jpg
我正在尝试使用.htaccess RewriteRule处理此问题。
RewriteRule /_files/(.*) /~hazelwoodconstru/_files/$1 [R,NC,L]
我让它在某个时刻工作,但我搞砸了它,现在它已经坏了,我无法弄明白为什么!
修改
我在此.htaccess中也有以下内容,可能会或可能不会干扰:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !404\.shtml|500\.shtml|favicon\.ico|index\.php{1}
RewriteRule (.*) /~hazelwoodconstru/ [QSA,L]
答案 0 :(得分:0)
您需要使规则的匹配更严格,并删除前导斜杠:
RewriteRule ^_files/ /~hazelwoodconstru/%{REQUEST_URI} [L,R]
如果您不想要外部重定向,请删除,R
标记。
答案 1 :(得分:0)
似乎正在发生的事情是,普通的绝对文件路径不会使用arraybox.net/~hazelwoodconstru/filepath
- 它们会直接转到arraybox.net/filepath
。在主目录arraybox.net上编写.htaccess对我来说不起作用,因为会有多个站点使用这个设置,并且没有办法告诉资产真正存在哪个/ home /目录。
我选择的解决方案:
我没有使用用户目录arraybox.net/~hazelwoodconstru
,而是设置了一个子域名
hazelwood.arraybox.net
。
然后我编辑了vhosts配置,将此子域的文档根目录更改为指向/ home / hazelwoodconstru目录(我还必须更改用户)。
此外,我必须修改vhosts.local以更改phpopenbasedirprotect以使用documentroot。然后我不得不在/ home /目录中添加allow from all
。
它现在在子域工作。