我想弄清楚如何在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