.htaccess - .htaccess 重写规则以包含文件
问题描述
我试图找出将所有 url 重定向到文件从一个域到另一个域的正确规则:
oldsite.com/uploads/imagefile.png
至newsite.com/uploads/imagefile.png
我尝试的所有规则都适用于链接,例如oldsite.com/uploads/
确实被重定向到的链接,newsite.com/uploads/
但是,一旦我将文件添加到路径,我就会得到 404。
这是我尝试过的一条规则:
Redirect 301 /uploads http://www.newsite.com/uploads
或者
RewriteEngine on
RewriteRule ^uploads/(.*)$ https://www.newsite.com/uploads/$1 [L,R=301]
解决方案
尝试在您的.htaccess
:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^ (www\.)?oldsite.com/uploads/$1 [NC]
RewriteRule ^(.*)$ http://newsite.com/uploads/$1 [R=301,L]
您可以在此处查看此规则:https ://htaccess.madewithlove.be?share=cf237628-6307-5cd2-992c-5db8ffef8568
它检查 URL 的两种变体(www / 非 www),然后使用R=301
重定向,这是指向新域和相关图像文件的永久重定向。
我建议R=302
在测试时将其更改为,因为这是一个临时重定向。确保在测试之前清除缓存。
推荐阅读
- typescript - 如何从函数类型中删除键/属性
- sql - 识别空计划块
- powerbi - 为具有服务主体的客户嵌入 Power BI 报告
- node.js - Heroku 部署 Nodejs
- google-apps-script - 将 Google 表格通过电子邮件发送到 PDF 时突然出现脚本错误
- javascript - html 输入标签 type=color 的值未通过 selenium 中的 JavaScript 设置
- environment-variables - Gatsby:在 html.js 中设置读取环境变量
- facebook-messenger - One-time notification message_optins callback not being received by testers, is being received by administrator
- teradata - 字符串转换为数值失败:Teradata 插入
- c# - 从扩展 HttpClient 的类中使用 GetAsync 时如何模拟它?