使用Apache
,如何使URL(简称图像路径)实际来自其他位置。例如,我有一个html
页面,其网址如下:
apple.html,里面有原始代码:
<img src="http://www.myoldsite.com/assets/image/apple.jpg" />
<img src="http://www.myoldsite.com/assets/image/orange.jpg" />
但实际上我希望将此路径重写为:
<img src="http://www.mynewsite.com/image/apple.jpg" />
<img src="http://www.mynewsite.com/image/orange.jpg" />
因此,当我访问apple.html
页面时,图像应该来自新位置,而无需更改每个文件中的实际代码。
但实际上我对.htaccess
规则完全不满意。当我像下面这样使用时,它显示错误:
RewriteEngine On
RewriteRule http://www.mynewsite.com/image/(.*) /assets/image/$1 [QSA, L]
我有这样的数千页,但我完全坚持.htaccess
规则
我错过了什么?请帮忙。
答案 0 :(得分:0)
我假设两个域都指向同一个apache实例?
您似乎已切换RewriteRule
的参数。语法是:
RewriteRule UrlsMatchingThis ChangeToThis [params]
所以在你的情况下我会做这样的事情:
RewriteRule ^/assets/image/(.*) http://www.mynewsite.com/image/$1 [R,NC,L]
这匹配tld之后的部分是/ assets / image /(任何东西)的所有请求。 我用过的旗帜是
R redirect
NC Ignore case
L Last rewrite rule for this request
您可能需要向RewriteRule
添加条件,如下所示:
RewriteCond %{SERVER_NAME} ^(www\.)?myoldsite\.com$ [NC]
RewriteRule ^/assets/image/(.*) http://www.mynewsite.com/image/$1 [R,NC,L]
如果域名为myoldsite.com,只有或不包含www
,这只会重写您的请求。
Se http://httpd.apache.org/docs/current/mod/mod_rewrite.html以获取重写模块的文档。
答案 1 :(得分:0)
通过httpd.conf
启用mod_rewrite和.htaccess,然后将此代码放在.htaccess
目录下的DOCUMENT_ROOT
中:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteRule ^(image/.+)$ /assets/$1 [NC,L]