2010-09-24 23 views
10

Tôi muốn định cấu hình quy tắc mod_rewrite mà không cần sử dụng các tệp .htaccess. Khi tôi đặt các quy tắc trong các tập tin .htaccess chúng hoạt động tốt, nhưng tôi muốn để lại tất cả cấu hình trong tập tin cấu hình/etc/apache2/sites-available/[site name] của tôi.Tôi đặt RewriteRules ở đâu trong Apache2 mà không cần sử dụng các tệp .htaccess?

Khi tôi đặt cùng một RewriteRules trong chỉ thị VirtualHost hoặc Thư mục, không có gì hoạt động. Tôi đang làm gì sai? Đây là một mẫu từ tệp cấu hình VirtualHost của tôi:

<Directory /> 
Options FollowSymLinks 
# AllowOverride is on for the .htaccess files to work 
AllowOverride All 
RewriteEngine On 
RewriteRule ^oldsite\.php$ newsite.php 
</Directory> 

Tôi nghĩ tôi có thể xem một số chỉ thị trong tệp apache2.conf, nhưng tôi không chắc chắn. Cứu giúp. :)

Trả lời

5

Bạn đang sử dụng RewriteRule pattern that is meant for an .htaccess file. Lý do:

Khi sử dụng công cụ viết lại trong .htaccess file tiền tố cho mỗi thư mục (mà luôn luôn là như nhau cho một thư mục cụ thể) tự động là loại bỏ cho phù hợp với mô hình và tự động thêm sau thay thế đã được thực hiện.

Vì vậy, cố gắng quy tắc này với đường dẫn URL đầy đủ:

RewriteRule ^/oldsite\.php$ /newsite.php 
+0

Cảm ơn bạn rất nhiều vì phản ứng nhanh. Nó sẽ không hoạt động khi tôi đặt nó trong chỉ thị Directory, nhưng tôi đã chuyển nó lên VirtualHost và nó hiện đang hoạt động tốt. Bất kỳ ý tưởng tại sao? – wittmaniac

+0

@ user358036: Tôi đoán bạn cần đặt nó vào phần '' mô tả gốc tài liệu của bạn. – Gumbo

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