.htaccess将本地转发到远程404

时间:2011-05-10 16:00:05

标签: regex .htaccess rewrite http-status-code-404 forward

我在使用CMS的网站上进行本地开发。我们有一个目录,用于存储用户上传的内容,例如images(/ assets /)。问题是,在本地开发时,我不希望所有上传的文件都来自我的机器上的生产站点,因此我将此目录保留为空,并且/ assets /目录中的所有文件HTTP请求都获得404'编

如果我的.htaccess中有一个重写规则可以检测到404,并转发到生产站点的外部URL以从那里加载资产,那将是多么美妙的事情。逻辑是:

Request localhost/somesite/assets/foo.jpg
200 response ? send the local file /somesite/assets/foo.jpg
404 ? forward to http://www.productionsite.com/assets/foo.jpg

这可能吗?

2 个答案:

答案 0 :(得分:1)

你的.htaccess规则是这样的:

Options +FollowSymlinks -MultiViews
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(assets/.*)$ http://www.productionsite.com/$1 [R,L,NC]

这将确保您本地网络服务器上匹配/assets/的任何请求 从外部重定向http://www.productionsite.com/assets/...

btw 你应该真的提高你的录取率,否则你可能没有多少答案。

答案 1 :(得分:0)

/资产是否始终在另一个站点上,或者仅当文件在本地不可用时?

我问的原因是,在开发服务器上的httpd.conf / .htaccess中使用以下(未经测试的)规则始终将/ assets重定向到live可能更简单:

Options +FollowSymLinks
RewriteEngine on
RewriteCond $1 ^(assets) [NC]
RewriteRule ^(.*)$ http://www.livesite.com/$1 [L]