我想弄清楚如何在URL中使用&符号。&&URL在URL
看到它在这里:http://www.indeed.co.uk/B&Q-jobs我希望做类似的事情。
不完全确定当访问url时服务器将调用什么。
有没有办法使用.htaccess抓取这样的请求并重写到特定的文件?
感谢您的帮助!
我想弄清楚如何在URL中使用&符号。&&URL在URL
看到它在这里:http://www.indeed.co.uk/B&Q-jobs我希望做类似的事情。
不完全确定当访问url时服务器将调用什么。
有没有办法使用.htaccess抓取这样的请求并重写到特定的文件?
感谢您的帮助!
像/B&Q-jobs
这样的URI被发送到编码如下的服务器:/B%26Q-jobs
。然而,当它获得通过重写引擎发送时,URI已经被解码,所以你要实际匹配对&
字符:
Rewrite ^/?B&Q-jobs$ /a/specific/file.html [L]
这就所以当有人请求/B&Q-jobs
,他们实际上得到服务内容在/a/specific/file.html
。
&符号常用于查询字符串中。查询字符串是在该页面用来呈现内容的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中和号的用途是将查询字符串中的变量串起来。出于此目的使用它是不正确的,并且可能在将来引起混淆。
你到目前为止尝试过什么?你看过[URL中允许的字符](http://stackoverflow.com/q/1856785/1779906)。 – Perleone