2012-06-20 34 views
5

tập tin .htaccess của tôi là như sau:mod_rewrite Thêm mở rộng .php

Options -Multiviews 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example.com 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ $1.php 

Vấn đề mà tôi đang gặp là khi tôi cố gắng để truy cập vào trang web của tôi mà không có www. tiền tố, phần mở rộng .php được thêm vào địa chỉ, thường có thể gây ra sự cố. Ví dụ: nếu tôi cố truy cập trang chủ của mình bằng địa chỉ example.com, địa chỉ đó được chuyển thành www.example.com/.php. Tôi muốn www. được thêm vào, nhưng phần mở rộng .php được thêm vào cuối chỉ gây ra lỗi. Làm thế nào để sửa lỗi này?

+0

Đây là cách viết không an toàn "/x"->"/x.php" –

+2

RewriteRule không thể _change_ URL trong thanh địa chỉ trình duyệt. Bạn cần cờ '[R]' (chuyển hướng) để chuyển hướng trình duyệt đến các URL mới. –

+1

Xóa phần mở rộng php là gì? –

Trả lời

1

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Tháo L trong [R=301,L], có nghĩa là "Last", có nghĩa là "ngừng xử lý RewriteRules sau này."

301 cũng có nghĩa là "chuyển hướng vĩnh viễn". Trong trường hợp này, trình duyệt của bạn sẽ nhớ chuyển hướng vĩnh viễn. Có thể bạn đã có một phiên bản quy tắc viết lại của mình, truy cập URL của bạn và sau đó thay đổi nó? Xóa bộ nhớ cache của bạn hoặc thử một trình duyệt khác.

+0

Tôi đã thử làm điều đó nhưng nó không hoạt động. Vấn đề vẫn tồn tại: khi tôi nhập vào mysite.com/main tôi ngay lập tức được chuyển đến www.mystie.com/main.php, nhưng tôi không muốn phần mở rộng .php đó. – user532493

+0

Đã chỉnh sửa câu trả lời của tôi. Lưu ý 301, chuyển hướng có thể được lưu trong bộ nhớ cache trong trình duyệt của bạn. –

+0

Cảm ơn sự giúp đỡ của bạn. Tôi đã thử ba trình duyệt khác nhau và xóa bộ nhớ cache trên tất cả các trình duyệt nhưng vẫn gặp sự cố tương tự. – user532493

0

Cờ "L" trên dòng 4 của tệp của bạn có nghĩa là "cuối cùng", tức là, nó sẽ không xử lý thêm bất kỳ quy tắc nào. Hãy thử xóa L.

+0

Tôi đã thử làm điều đó nhưng nó không hoạt động. Vấn đề vẫn tồn tại: khi tôi nhập vào mysite.com/main tôi ngay lập tức được chuyển đến www.mystie.com/main.php, nhưng tôi không muốn phần mở rộng .php đó. – user532493

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