所以我遇到一个问题,我试图根据URL是否以某些字母或数字开头来重定向URL。如果尾随URL的前2个以“A2”或“a2”开头,我需要重定向网站访问者,删除URL的前2个,然后用特定的目录路径替换“A2”或“a2”
所以这是一个澄清的具体例子。如果用户点击(或键入其浏览器的地址栏)
http://www.example.com/A2d39g
或
http://www.example.com/a2d39g
他们会自动被重定向到
http://www.example.com/product/d39g
也值得一无所知,他们在这个URL中输入的个人信息将通过邮件中的标签读取,他们不会一直点击链接。我最初想过通过jQuery做这个(注意下面的一些解决方案),但我修改了这个帖子,因为我认为最好通过.htaccess文件来解决这个问题。
答案 0 :(得分:1)
See a demo of the following here.
我们需要做的第一件事是绑定click
事件并阻止默认行为:
$('.redirMe').click(function(e){
e.preventDefault();
});
然后,在此单击函数中,我们将执行一系列拆分和子串划分以测试代码值。请注意,我认为链接并不比您给出的链接复杂,它始终是根主机,后跟一个简单的字母数字代码。
var th = $(this).attr('href'), // get the href
ah = th.split('/'), // split it up
code = ah[ah.length - 1], // grab the last value (the code)
c2 = code.substring(0, 2), // grab the first two code chars
然后,我们会在分割pop
结束时href
代码,以获取主机并测试转换后的两个字符toLowerCase
以查看它们是否匹配{{1} },如果是这样重定向到产品,否则请访问404页面:
a2
然后,您可以将redr = (c2.toLowerCase() == "a2") ?
ah.join('/') + '/product/' + code.substring(2) :
ah.join('/') + '/404;
设置为重定向!
答案 1 :(得分:0)
您可以使用Apache mod_rewrite进行此类重定向。将这样的内容添加到httpd配置文件中:
RewriteEngine On
RewriteRule ^/[aA]2(.*)$|^/(.*)[aA]2$ /product/$1
答案 2 :(得分:0)
没有直接的方法可以在JavaScript中以跨浏览器的方式执行此操作;许多浏览器都不允许您从window.location
获取完整的网址,以防止恶意JavaScript跟踪用户。执行此操作的最佳方法是在服务器端。如果您想从JavaScript进行重定向,您可能需要向服务器发送一个AJAX请求,并希望HTTP referer标头指示它所来自的页面,因此它可以响应所需的操作。
答案 3 :(得分:0)
我找到了解决方案......我在这里略微改变了问题并得到了答案:Redirect a URL based off it's first character with htaccess