尽管有斜线,但查询将 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?的主要内容,如果未能解决你的问题,请参考以下文章
htaccess使用https,非www和目录尾随将两个域重写为一个域
将规则重写为IIS以将HTTPS重定向到HTTP会导致null HttpContext.Request.ContentType