在PHP中,如何檢查當前頁面是否在www中有www?如何檢查頁面網址是否有www或不使用PHP?
例如,如果用戶在http://www.example.com/something上,我怎麼能找到www中的URL和http://example.com/something,www是不是在url中?
在PHP中,如何檢查當前頁面是否在www中有www?如何檢查頁面網址是否有www或不使用PHP?
例如,如果用戶在http://www.example.com/something上,我怎麼能找到www中的URL和http://example.com/something,www是不是在url中?
array_shift(explode(".",$_SERVER['HTTP_HOST']));
應該工作,然後檢查數組是否存在www。如果您只是試圖刪除或強制www,那麼.htaccess規則遠遠優於PHP。
HTTP_HOST是否包含www部分?我認爲它只包括域名。我可能錯了 –
子域被認爲是主機的一部分,所以是的,它應該包含www – Andrew
我只需回顯$ _SERVER ['HTTP_HOST']:http:// www。 ferdiaobrien.com/quick.php –
你知道這個網址嗎?從目前的請求頭,如果有 一個:然後藉此:
<?php
$parsed = parse_url("http://www.example.com/something");
$hasWww = strpos($parsed['host'], "www.") === 0;
var_dump($hasWww);
否則,把主機的
strpos($_SERVER['HTTP_HOST'], "www.") === 0
$_SERVER['HTTP_HOST']
內容。
$_SERVER['SERVER_NAME']
服務器主機根據當前運行腳本是 執行的名稱。如果腳本正在虛擬主機上運行,那麼將爲該虛擬主機定義的值爲 。
你可以做一個preg_match
這將是:
if(preg_match('/www/', $_SERVER['HTTP_HOST']))
{
echo 'you got www in your adress';
}
else
{
echo 'you don not have www';
}
你甚至可以用這取決於你正在建設上面的選項會爲一個simpel檢測做精的.htaccess做到這一點。
,如果你選擇的選項Ferdia給做檢查如下:
$domain = array_shift(explode(".",$_SERVER['HTTP_HOST']));
if(in_array('www', $domain))
{
echo 'JUP!';
}
你的正則表達式是錯誤的,如果他在www字符串末尾有www的地方會怎麼樣。檢查此:http://rubular.com/r/IEzoGnqEm1 – Matija
他的問題是「www在網址」不提及它應該在一開始。但是,如果您只想在開始時匹配www,則正則表達式應爲:/^www / –
您可以使用$_SERVER['HTTP_HOST']
讓您的域名。現在,如果您的網站不使用容易的子域名。只要使用這樣的事情:
$url1 = "www.domain.com";
$params = explode('.', $url1);
if(sizeof($params === 3) AND $params[0] == 'www') {
// www exists
}
請注意,如果您的參數數組有2項,然後域看起來像這樣domain.com
並沒有www
清楚。您甚至可以檢查$params
陣列的大小,並根據其大小確定是否存在www
。
現在,如果您的網站使用子域名,那麼它會變得更加複雜。你將不得不爲這些可能出現的情況:
$url1 = "www.domain.com";
$url2 = "www.sub.domain.com";
$url3 = "domain.com";
$url4 = "sub.domain.com";
然後你會再次爆發每個URL,並且比較大小,並檢查第一項是「WWW」。 但請注意,您的子域可能被命名爲www
其中www
將是子域:D 然後它會看起來像這樣:www.domain.com
,再次,www
是子域:)這是瘋了我幾乎瘋了這一個:)
無論如何,當網站沒有使用子域名來檢查www
,這是蛋糕的和平。 但要檢查是否有網址和www
您的網站是使用子域名,這可能是艱難的。 處理這一問題的最簡單的解決辦法是禁用www
子域,如果你能。
如果您需要更多的幫助,這並不能回答你的問題,隨時問。 我有類似情況的用戶將能夠創建自己的帳戶,這將是子域名,如www.user.domain.com
,我不得不做同樣的事情。
希望這會有所幫助!
有這麼多的方法來檢查WWW是否包含與否。
的方式之一是:
if(strpos($_SERVER['HTTP_HOST'], `www`) !== false) {
echo "WWW found";
} else {
echo "WWW not found";
}
請記住,如果你使用任何的以下方法檢查,以確保$ _ SERVER [「HTTP_HOST」]做任何事情之前存在。 if(isset($ _ SERVER ['HTTP_HOST'])) 並非每個宿主環境都會填充該變量。我碰到了一些沒有的。最好同時使用HTTP_HOST和SERVER_NAME以確保您可以獲取域名進行檢查。 –
@cryptic是否始終存在SERVER_NAME? –
http://stackoverflow.com/questions/2297403/http-host-vs-server-name會給兩者一些很好的信息。如果沒有在Apache上設置SERVER_NAME,則將在IP上執行反向查詢。如果您的域名擁有專用IP,則應該解決域名更正問題,但如果域名是共享IP地址,則可能導致域名被返回爲不同的域名。 –