Tôi đang cố viết một vài quy tắc mod_rewrite. Mọi thứ đang hoạt động tốt tại thời điểm này. Tại thời điểm này URL generic của tôi trông như thế này:Mod_rewrite kiểm tra xem tập tin php có tồn tại không?
http://website.com/about-us
http://website.com/privacy
Tại thời điểm này, những 2 liên kết được mod_rewritten để content.php
, vì about-us
và privacy
không tồn tại file như .php, nhưng đúng hơn, nội dung của họ được lưu trữ trong một cơ sở dữ liệu mà content.php truy xuất.
Tôi có một url:
http://website.com/contact-us
nào không tồn tại như là một file .php, bởi vì nó chứa dữ liệu tùy chỉnh. Làm cách nào để kiểm tra xem liệu có tồn tại contact-us.php
hay không. Nếu có, chuyển hướng website.com/contact-us
-website.com/contact-us.php
, nếu không, chuyển hướng đến website.com/content.php
Dưới đây là tập tin mod_rewrite của tôi như nó đứng:
RewriteEngine On
# I want the following condition and rule to look to see if the .php file exists,
# and if it does, redirect to the physical page, otherwise, redirect to content.php
RewriteCond %{DOCUMENT_ROOT}/([a-zA-Z0-9\-_]+).php -f
RewriteRule ^([a-zA-Z0-9\-_]+)\.php$ [L]
RewriteRule ^([a-zA-Z0-9\-_]+)$ /content.php [L]
RewriteRule ^(product1|product2|product3)/(designer1|designer2|designer3)$ /search.php?productType=$1&designer=$2 [L]
RewriteRule ^sale/(product1|product2|product3)$ /search.php?sale=1&productType=$1 [L]
Nếu bạn cần thêm thông tin, xin vui lòng cho tôi biết! Tôi đánh giá cao trả lời :)
Cảm ơn bạn đã trả lời, thật không may, nó đến với một lỗi 500 máy chủ nội bộ :( –
Tháo '/ 'giữa'% {DOCUMENT_ROOT}% {REQUEST_URI} ' –
Ngoài ra, hãy xem xét kết hợp mẫu đơn giản hơn cho 'RewriteRule's. –