2011-04-21 45 views
7

Đây có phải là URI chính xác cho header('Location: '), cụ thể là ./?Địa chỉ chuyển hướng 301 301 Định dạng URI

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

Cảm ơn bạn.

+1

Bạn đang cố thêm dấu gạch chéo vào URL? Có những cách tốt hơn để làm điều đó. –

+0

Tôi đang cố chuyển hướng vĩnh viễn từ tệp chứa mã đó vào tệp mặc định (index.something) được chứa trong cùng thư mục với tệp ban đầu đã thực hiện chuyển hướng. – Francisc

+2

Bạn nên sử dụng một URI tuyệt đối. Xem: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30 – Treffynnon

Trả lời

5

Bạn phải sử dụng một absolute URI according to the spec nên một cái gì đó như sau đây sẽ phù hợp với bạn:

// 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

Cảm ơn bạn, Treffynnon. – Francisc

7

Bạn cũng có thể sử dụng:

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

Tôi giả sử bạn muốn chuyển hướng đến các 'trang chủ', mà muốn được/thay vì ./

+0

Xin chào, tôi muốn chuyển hướng đến thư mục gốc của thư mục chứa tệp chứa mã đó. Trong trường hợp này, nó cũng là gốc của trang web. Tôi lo lắng vì tôi đọc HTTP/1.1 yêu cầu đường dẫn tuyệt đối. – Francisc

+2

Theo tiêu chuẩn, một URL tuyệt đối là bắt buộc. Điều này sẽ hiệu quả, nhưng không hợp lệ –

+2

Như @Pekka đã đề cập, hãy xem http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30 – Treffynnon

Các vấn đề liên quan