2010-10-27 42 views
5

Tôi muốn tạo bản sao tĩnh của trang web, giữ lại các URL hiện tại. Vấn đề là các URL trông giống như:apache, cho phép tên tệp có '?'

http://mysite/index.php?id=XXX

và Apache không muốn tìm file "index.php id = XXX?". Thay vào đó, nó diễn giải yêu cầu dưới dạng tệp "index.php" với truy vấn "id = XXX".

Tôi làm cách nào để yêu cầu Apache ngừng xử lý dấu chấm hỏi?


Cuối cùng, giải pháp của tôi:

1) đổi tên các tập tin từ "index.php id = XXX?" Thành "index.php_id = XXX"

2) Thêm vào .htaccess:

RewriteEngine On 
RewriteCond %{ENV:REDIRECT_STATUS} ="" 
RewriteCond %{QUERY_STRING} !="" 
RewriteRule ^(.*)$ $1_%{QUERY_STRING} [L] 

Trả lời

5

Escape? như %3f sự: http://www.example.com/index.php%3fid=XXX.

Nếu bạn liệt kê tệp trong thư mục có chỉ mục, Apache sẽ tạo chính xác các liên kết của định dạng này. Tuy nhiên, bạn phải viết lại các liên kết trong các trang hiện có.

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