2013-02-06 37 views
1

我想弄清楚如何在URL中使用&符号。&&URL在URL

看到它在这里:http://www.indeed.co.uk/B&Q-jobs我希望做类似的事情。

不完全确定当访问url时服务器将调用什么。

有没有办法使用.htaccess抓取这样的请求并重写到特定的文件?

感谢您的帮助!

+0

你到目前为止尝试过什么?你看过[URL中允许的字符](http://stackoverflow.com/q/1856785/1779906)。 – Perleone

回答

1

/B&Q-jobs这样的URI被发送到编码如下的服务器:/B%26Q-jobs。然而,当它获得通过重写引擎发送时,URI已经被解码,所以你要实际匹配对&字符:

Rewrite ^/?B&Q-jobs$ /a/specific/file.html [L] 

这就所以当有人请求/B&Q-jobs,他们实际上得到服务内容在/a/specific/file.html

2

&符号常用于查询字符串中。查询字符串是在该页面用来呈现内容的URL的末尾一个或多个变量,跟踪信息等的查询字符串通常是这个样子:

http://www.website.com/index.php?variable=1&variable=2 

注意如何在URL中的第一个特殊字符文件扩展名后为?。这指定查询字符串的开始。

在你的例子中,没有?,所以没有查询字符串启动。根据RFC 1738,除了指定目的(将查询字符串中的变量链接在一起),&符号不是有效的URL字符,因此您提供的链接在技术上无效。

围绕这种无效的方式以及可能发生的情况是重写。重写通知服务器根据模式或匹配显示特定的文件。例如,可能与你的工作,例如一个.htaccess重写规则可以是:

RewriteEngine on 
RewriteRule ^/?B&Q-(.*)$ /scripts/b-q.php?variable=$1 [NC,L] 

这个规则去寻找新的URL的开始http://www.indeed.co.uk/B&Q-并显示http://www.indeed.co.uk/scripts/b-q.php?variable=jobs内容来代替。

有关Apache重写规则的更多信息,请查看他们的official documentation

最后,我建议不要在URL中使用&符号,即使在重写时,除非它们是查询字符串的一部分。 URL中和号的用途是将查询字符串中的变量串起来。出于此目的使用它是不正确的,并且可能在将来引起混淆。