[英]Apache2 mod_rewrite rules
我如何将静态文件请求(如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]
资产子域正常运行
asset.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回复200
根据您的评论,您只需要更改RewriteRule
使用的正则表达式中捕获的内容即可。 现在$1
是(.*)
。 您可以通过将其添加到捕获组之前的路径来从其中删除“资产”。
更改:
RewriteRule ^(.*) http://assets.example.com$1 [NC,L]
至:
RewriteRule ^assets/(.*) http://assets.example.com/$1 [NC,L]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.