根据URL别名中的前2个字母重定向URL

时间:2011-02-02 00:37:27

标签: .htaccess

所以我遇到一个问题,我试图根据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文件来解决这个问题。

4 个答案:

答案 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; 设置为重定向!

再次,here's sample code of the above

答案 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