2009-03-02 37 views
6

Như nhiều người khác, tôi đang gặp vấn đề với việc thực hiện một số mod_rewriting rất đơn giản trong apache.Mod viết lại vấn đề

Tôi có sau trong .htaccess của tôi:

Options +FollowSymLinks 
RewriteEngine on 
RewriteBase/
RewriteRule ^view/([0-9]+)/([0-9]+)$ view.php?advertId=$1&publisherId=$2 [NC,QSA,L] 

nào là nghĩa vụ phải dịch/xem/4093/203 qs = val -> /view.php?advertId=4093 & publisherId = 203? qs = val

Bây giờ, nó hoạt động khi gọi nó bằng/Xem ..., nhưng khi làm chữ thường/xem, nó chuyển hướng đến đúng tệp, nhưng advertId và publisherId không được đặt trong tập lệnh PHP của tôi cái nhìn đầu tiên-chữ hoa và tôi chỉ đơn giản là không có đầu mối nào với những gì đang xảy ra trên mặt trận đó (tôi đã thử nghiệm và xem hành vi đó đơn giản bằng cách thực hiện trên v của tôi iew.php).

Bất kỳ ai biết tại sao điều này xảy ra?

tôi có thể muốn thêm, thông tin máy chủ của tôi là như sau:

Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny2 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2 mod_perl/2.0.4 Perl/v5.10.0 

IE. một cài đặt debian mới có sẵn với gói debian mặc định + php-mssql.

Trả lời

10

MultiViews có thể gây ra hành vi này, đang cố ánh xạ yêu cầu đến tệp hiện có của siminar trước khi chuyển yêu cầu tới mod_rewrite. Hãy thử tắt tính năng này:

Options -MultiViews 
+0

Đẫm máu rực rỡ! Tôi có thể hỏi làm thế nào và tại sao mặc dù? – kastermester

+0

'MultiViews' là một tính năng cốt lõi đang được thực thi trước mod_rewrite. Khi 'MultiViews' được bật, Apache đang cố gắng tìm một tên tệp tương tự để đường dẫn yêu cầu có thể được ánh xạ. Vì vậy, '/ view /…' của bạn được ánh xạ tới '/ view.php /…' và sau đó được truyền cho mod_rewrite, sau đó không thể tìm thấy một kết quả phù hợp. – Gumbo

+0

Ah ok, cũng cảm ơn một tấn cho sự giúp đỡ, đã cho tôi rất nhiều nỗ lực cố gắng để mess xung quanh với việc viết lại, mà rõ ràng là không giúp gì cả - giúp đỡ của bạn được nhiều đánh giá cao! :) – kastermester

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