2011-04-21 15 views
7

Bu header('Location: '), ./ için doğru bir URI mı?PHP 301 yönlendirme konumu URI biçimi

header ('HTTP/1.1 301 Moved Permanently'); 
header ('Location: ./'); 

Teşekkür ederiz.

+1

URL'lere izleyen bir eğik çizgi eklemeye mi çalışıyorsunuz? Bunu yapmanın daha iyi yolları var. –

+0

Bu kodu içeren dosyadan, yeniden yönlendirmeyi yapan ilk dosyayla aynı klasörde bulunan varsayılan dosyaya (index.something) kalıcı olarak yeniden yönlendirmeye çalışıyorum. – Francisc

+2

Mutlak bir URI kullanmalısınız. Bakınız: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30 – Treffynnon

cevap

5

olurduk Sen gibi bir absolute URI according to the spec yüzden bir şey kullanmalıdır aşağıdakiler sizin için çalışmalıdır:

// check if the server is secure or not to determine URL prefix 
if(isset($_SERVER['HTTPS']) and 'on' === $_SERVER['HTTPS']) { 
    $location = 'https://'; 
} else { 
    $location = 'http://'; 
} 

// get the servers base URL 
$location .= $_SERVER['SERVER_NAME'] . '/'; 

// grab the current URI without a file name in it 
$location .= dirname($_SERVER['REQUEST_URI']) . '/'; 

header('Location: ' . $location); 
exit(); 
+0

Teşekkür ederim, Treffynnon. – Francisc

7

da kullanabilirsiniz:

header('Location: /', false, 301); 

Sana 'ana' yönlendirme yapmak istediğiniz varsayalım ki/yerine ./

+0

Merhaba, bu kodun bulunduğu dosyanın bulunduğu klasörün kök dizinine yönlendirmek istiyorum. Bu durumda, sitenin de köküdür. Endişeliyim çünkü HTTP/1.1 okumuş mutlak yol gerektiriyor. – Francisc

+2

Standartlara göre, mutlak bir URL gereklidir. Bu işe yarayacak, ancak geçerli değil –

+2

As @ Pekka sözü edilen bkz. Http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30 – Treffynnon