javascript - 如何使用双斜杠(//)捕获/检查所有 URL 并更正它们(JQuery?)
问题描述
目前我们有一个大问题(暂时)!在我们的商店中,我们使用第三方解决方案来推广和搜索产品。我们有大约 3600 种产品以错误的方式收获 - 基本 URL 有一个额外的正斜杠 ( www.sceneryworkshop.nl// ),所以现在所有产品都被称为错误的方式并最终出现在 nomansland。我们开始了新的数据同步,但同步需要很长时间。
所以我正在寻找一个临时的解决方案,即使它很脏!我无权访问 .htaccess 或其他服务器组件。该商店在基于 TWIG 的闭源平台(Lightspeed HQ)上运行。
任何知道如何更改或重定向到正确网址的人?也许是Javascript?源被定位并从很多地方调用,所以唯一的解决方案是检查和更正 url 的全局函数。
我真的希望有人能回答我:-)
解决方案
嗨,我有一个解决方案,假设在渲染 dom 后加载 jquery
$(document).ready(function() {
$('a').each(function() {
$split = $(this).attr('href').split('com//');
$(this).attr('href', $split[0] + 'com/' + $split[1]);
console.log($(this).attr('href'));
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="https://www.google.com//search?q=Jquery" target="_blank">Jquery</a>
<a href="https://www.google.com//search?q=Java" target="_blank">Java</a>
<a href="https://www.google.com//search?q=J" target="_blank">J</a>
更新 好。我已经阅读了您的评论,并从您的网站在检查员中尝试了一些东西。以下解决方案有效!
$('body a[href^="https://www.google.com//"]').each(function() {
$x = $(this).attr('href').replace('com//', 'com/');
$(this).attr('href', $x)
console.log($x);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="https://www.google.com//search?q=Jquery" target="_blank">Jquery</a>
<a href="https://www.google.com//search?q=Java" target="_blank">Java</a>
<a href="https://www.google.com//search?q=J" target="_blank">J</a>
我在这里做的很简单,首先我搜索每个包含以下 url 的元素:https ://www.sceneryworkshop.nl// 。然后用正确的网址替换它们。
推荐阅读
- salesforce - Salesforce Lightning - 如何为 Lightning 设置 nooverride,但在 Classic 中保留覆盖
- java - java流和重载方法
- powershell - 使用 PowerShell 将子文件夹移动到其他位置并根据父级重命名
- flutter - 如何在 Flutter 中使用来自 Web 的数据设置 Dropdownbutton 的项目?
- vb.net - 按另一个列表(T2)排序列表(T1)
- java - 如何从文件系统加载类文件并在类池中使用它?
- go - 如何写一个antlr4访问者
- asp.net-core - serilog 无法将自定义属性添加到数据库表
- mongodb - 在 MongoDB 中使用变更流时获取事务中涉及的所有文档
- excel - 有没有办法在作为字符串变量的输出中打印一个范围?