【发布时间】:2018-02-03 03:30:37
【问题描述】:
我如何重写静态文件请求,例如 http://example.com/assets/img/logo.png 到 http://assets.example.com/img/logo.png
主站重写规则
ServerName example.com
ServerAlias example.com
DocumentRoot /var/www/html/example.com/public/
<Directory /var/www/html/example.com/public/ >
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
RewriteEngine on
RewriteCond %{HTTP_HOST} !assets\.site\.com
RewriteCond %{REQUEST_URI} \.(png|gif|ico|css|js|tiff|woff|woff2|ogg|mp3)$ [NC]
RewriteRule ^(.*) http://assets.example.com$1 [NC,L]
资产的子域工作正常
assets.example.com 的虚拟主机配置
ServerName assets.example.com
ServerAlias assets.example.com
DocumentRoot /var/www/html/example.com/public/assets/
<Directory /var/www/html/example.com/public/assets/ >
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
http://assets.example.com/img/logo.png 给出 404 但如果我创建一个 /var/www/html/example.com/public/assets/assets/ 那么http://assets.example.com/img/logo.png reutns 200
【问题讨论】:
-
我不相信您可以使用
mod_rewrite进行跨域重写。我建议改为查看mod_proxy 并执行proxy_pass -
我能够将所有 /assets/img/logo.png 等重写为 assets.example.com/assets/img/logo.png 。唯一的问题是重复的'/assets/'
标签: apache .htaccess mod-rewrite virtualhost