我想弄清楚如何在 url 中使用 & 符号。
在这里看到它:http: //www.indeed.co.uk/B&Q-jobs我想做类似的事情。
不完全确定访问 url 时服务器将调用什么。
有没有办法使用 .htaccess 获取这样的请求并重写到特定文件?
谢谢你的帮助!
我想弄清楚如何在 url 中使用 & 符号。
在这里看到它:http: //www.indeed.co.uk/B&Q-jobs我想做类似的事情。
不完全确定访问 url 时服务器将调用什么。
有没有办法使用 .htaccess 获取这样的请求并重写到特定文件?
谢谢你的帮助!
与号通常用于查询字符串。查询字符串是 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]
此规则将查找任何以 开头的 URLhttp://www.indeed.co.uk/B&Q-
并显示其内容http://www.indeed.co.uk/scripts/b-q.php?variable=jobs
。
有关 Apache 重写规则的更多信息,请查看其官方文档。
最后,我建议不要在 URL 中使用与号,即使在进行重写时也是如此,除非它们是查询字符串的一部分。URL 中的 & 符号的目的是在查询字符串中将变量串在一起。出于该目的使用它是不正确的,并且可能会在将来引起混乱。
像这样编码的 URI/B&Q-jobs
被发送到服务器:/B%26Q-jobs
. 但是,当它通过重写引擎发送时,URI 已经被解码,因此您希望实际匹配&
字符:
Rewrite ^/?B&Q-jobs$ /a/specific/file.html [L]
这使得当有人请求时/B&Q-jobs
,他们实际上得到了内容/a/specific/file.html
。