讓我們假設我的網址是mysite.com/myuri。世界上有很多方法知道,要知道我的網站mysite.com上是否存在本地uri myuri。如何知道本地URI/URL是否存在?
- 的最簡單和最快速的方法是:
$uri_exists = file_exists($_SERVER['DOCUMENT_ROOT']."/myuri")
。 - 的下一個方法是:
$headers = @get_headers("http://mysite.com/myuri");
$uri_exists = ($headers[0] == "HTTP/1.1 404 Not Found");
- 方法(比前一個快一點)另一個是:
$curl = curl_init('http://mysite.com/myuri');
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_exec($curl);
$info = curl_getinfo($curl);
$uri_exists = ($info['http_code'] == 200);
curl_close($curl);
這些是我知道的方法。第一種方法精確檢查文件是否存在,而不是URI是否存在。如果使用mod_rewrite
,則此方法非常不準確。
接下來的兩種方法是準確的(即使使用mod_rewrite
),但由於它們對自己的站點執行遠程GET請求,所以速度很慢。它們也是低效率的,因爲只是爲了知道URI是否存在,mysite.com上的腳本將不必要地執行它們。而且他們會導致不必要的流量到mysql服務器。
來到我試圖問,我想在mysite.com的PHP腳本來檢查URL mysite.com/myuri存在使用方法比上面三種方法更加高效和準確。
謝謝
和平...
呃,糾正我,如果我錯了,但你不應該知道,如果在自己的網站存在的網址? ;)在文件系統或者你使用的框架(如果你是)上進行某種內省可能會更容易,而不是通過HTTP來解決它。 – enygma 2012-03-09 12:46:04
感謝您的回覆....是的,我在問題中提到的第一種方法就是如此。但它很少檢查重寫的(mod_rewrite)URL ......希望你得到那個...... – 2012-03-09 12:49:24
聽起來像你需要兩個檢查然後...一個文件系統,然後,如果失敗,通過HTTP檢查(到看看它是否被重寫)。我仍然對你爲什麼不知道你自己的網站上會有哪些網址感到困惑。 – enygma 2012-03-09 12:51:32