.htaccess文件不会将资产重定向到其他域

时间:2017-04-28 17:49:52

标签: .htaccess redirect mod-rewrite

我正在尝试让我的PHP站点使用.htaccess文件中的重定向从/ assets / u /从另一台服务器中提取图像。 .htaccess肯定是被使用的。我知道因为我在HTTPD配置中的站点根目录中设置了'AllowOverride All',甚至通过故意输入错误的语法并确认我收到内部服务器错误来测试它。但我的/ assets / u /中的图像仍未从其他服务器中提取。下面是我的.htaccess文件...

SetEnv APPLICATION_ENV production

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^((www)|(draft))\.
RewriteRule ^(.*?)\/*$ http://www.%{HTTP_HOST}/$1 [R=301,L]

# Start of attempted redirect #
RewriteCond %{REQUEST_URI} ^.*(/assets/u/).*$ [NC]
RewriteRule ^assets/(.*)$ http://assets.otherserver.com/$1 [L,R=301]
# End of attempted redirect #

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

2 个答案:

答案 0 :(得分:2)

我不完全理解你的问题,但这是我的第一次尝试。

我假设您使用assets/u/作为<img href="assets/u/test.jpg">标记中的链接,并且您的实际文件存储在http://assets.otherserver.com地址中,

对于此任务,我建议您使用mod_proxy显示图片而不重定向网址尝试使用以下规则我假设您可以在不违反其他规则的情况下安排.htaccess。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/assets/u/(.+?)$
RewriteRule ^ http://assets.otherserver.com/%1 [P,L]

要使上述规则有效,您必须在下方启用。

LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_module modules/mod_proxy.so

在httpd.conf中取消注释以上行。

通知我任何更新。

答案 1 :(得分:0)

在使用RewriteBase指令时,请尝试删除第一个/

RewriteCond %{REQUEST_URI} ^(assets/u/).*$ [NC]