2015-05-17 18 views
6
RewriteRule ^([a-z]).php$ /index.php?zig=$1 [NC,L] # working 

Quy tắc này hoạt động chính xác. NhưngRewriteRule không hoạt động với ký tự cộng (+ hoặc *)

RewriteRule ^([a-z]+).php$ /index.php?zig=$1 [NC,L] # not working 

hoặc

RewriteRule ^([a-z]\+).php$ /index.php?zig=$1 [NC,L] # not working 

Không làm việc. Sự khác biệt là (+). Cách sử dụng + trong mã ở trên?

+0

Mẹo hàng đầu: nên tránh cụm từ "không hoạt động" trong mô tả sự cố. Nó quá mơ hồ. Thay vào đó, mô tả chính xác những gì xảy ra (với bằng chứng!) Và giải thích nó khác với những gì bạn muốn xảy ra thay thế. Chúng ta không thể nào đoán được điều bạn muốn đạt được từ mã đó, bằng cách nhập học của riêng bạn, _không đạt được điều đó! :) –

Trả lời

3

Quy tắc này là tốt:

RewriteRule ^([a-z]+)\.php$ /index.php?zig=$1 [NC,L] 

nhưng sẽ tạo ra một vòng lặp vô hạn kể từ khi viết lại URI /index.php cũng phù hợp với mô hình regex. Để tránh điều này bạn cần vài thay đổi như ngăn ngừa các file/thư mục từ viết lại này và thoát khỏi dot vì nó là một regex nhân vật siêu đặc biệt:

# If the request is not for a valid directory 
RewriteCond %{REQUEST_FILENAME} !-d 
# If the request is not for a valid file 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-z]+)\.php$ index.php?zig=$1 [QSA,NC,L] 

QSA (Query String Nối) cờ lưu giữ các thông số truy vấn hiện khi thêm một cái mới.

+1

Cảm ơn bạn. Nó đang làm việc. –

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