尽管有斜线,但查询将 http 重写为 https?

Posted

技术标签:

【中文标题】尽管有斜线,但查询将 http 重写为 https?【英文标题】:Query to rewrite http to https despite slashes? 【发布时间】:2018-02-16 13:05:06 【问题描述】:

我正在将我的网站从 http 迁移到 https。一切都很顺利,除了一个叫做革命滑块的插件制作的幻灯片。

我检查了 mysql 数据库并找到了如下条目:

"background_type":"image","image":"http:\/\/example.com\/wp-content\/uploads\/2014\/03\/Banner_1.jpg",

通常我会使用 NotePad++ 或 phpmyadmin 并进行搜索替换:

UPDATE x_posts SET y = REPLACE (post_content, 'http://www.example.com', 'https://www.example.com');

但是由于使用了 : \ / \ / 这并没有按预期工作。当我进行全局数据库搜索时,我什至找不到有问题的域。

是否可以编写查询来修复位于 xr_revslider_slides / params 中的这些幻灯片?

ps 我必须添加空格以防止自动翻译为://

【问题讨论】:

【参考方案1】:

这是一个理论,但也许您的数据存储带有额外的斜线,而不仅仅是 json 检索问题?

在这种情况下,

UPDATE x_posts SET y = REPLACE (post_content, 'http:\/\/www.example.com', 'https://www.example.com');

会做的。

【讨论】:

当我手动浏览表格时,我注意到数据确实存储有额外的斜线【参考方案2】:

JSON 使用反斜杠转义正斜杠。

MySQL 希望查询中的反斜杠使用反斜杠进行转义,否则反斜杠将被解释为转义字符。

MySQL 查询中的文字字符串\ 写为\\,因此:

UPDATE x_posts 
   SET y = REPLACE (post_content, 'http:\\/\\/www.example.com', 'https:\\/\\/www.example.com');

https://dev.mysql.com/doc/refman/5.7/en/string-literals.html

【讨论】:

以上是关于尽管有斜线,但查询将 http 重写为 https?的主要内容,如果未能解决你的问题,请参考以下文章

重写规则以在 HTTP 和 HTTPS 上工作

即使使用 URL 重写,IIS 也会强制使用斜线来删除它

IIS URL将Http重写为Https,排除单个URL

apache_conf 将HTTP重写(强制)为HTTPS

htaccess使用https,非www和目录尾随将两个域重写为一个域

将规则重写为IIS以将HTTPS重定向到HTTP会导致null HttpContext.Request.ContentType