2013-06-17 17 views
8

Dưới đây là mã duy nhất tôi có trong tệp .htaccess với apache 2.2.apache .htaccess viết lại - tôi có thể chuyển nó vào httpd.conf

Tôi đã đọc rằng tác động hiệu suất của nó để sử dụng một số .htacess và tốt hơn nếu điều này có thể hết trong số httpd.conf. Vì vậy, tôi có thể thêm điều này vào httpd.conf? Nếu vậy tôi sẽ đặt nó ở đâu?

Có cần phải đi vào VirtualHost cho mỗi Máy chủ cần thiết (trong trường hợp của tôi có rất nhiều máy chủ) hoặc có thể đi chung vào httpd.conf để nó áp dụng cho tất cả máy chủ?

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-l 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

Trả lời

20

.htaccess cung cấp cấu hình cho thư mục, trong khi httpd.conf cung cấp cấu hình tổng thể. Tất nhiên, bạn có thể di chuyển nội dung từ .htaccess đến httpd.conf. Bạn có thể tìm hiểu thêm về .htaccess ở đây: Apache HTTP Server Tutorial: .htaccess files

Hãy .htaccess của bạn ví dụ:

Nội dung của tập tin .htaccess trong/www/htdocs/example

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-l 
    RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

Mục từ httpd của bạn. conf file

<Directory /www/htdocs/example> 
    <IfModule mod_rewrite.c> 
     RewriteEngine on 
     RewriteCond %{REQUEST_FILENAME} !-f 
     RewriteCond %{REQUEST_FILENAME} !-d 
     RewriteCond %{REQUEST_FILENAME} !-l 
     RewriteRule ^(.*)$ index.php?/$1 [L] 
    </IfModule> 
</Directory> 
+0

Bạn có tin rằng thay đổi này sẽ cải thiện hiệu suất apache? – user1105192

+5

vâng, hoàn toàn. Trích dẫn từ trang web trên: Bạn nên tránh sử dụng các tệp .htaccess hoàn toàn nếu bạn có quyền truy cập vào tệp cấu hình máy chủ chính httpd. Sử dụng các tệp .htaccess sẽ làm chậm máy chủ http Apache của bạn. Bất kỳ chỉ thị nào mà bạn có thể đưa vào tệp .htaccess được đặt tốt hơn trong khối Thư mục, vì nó sẽ có cùng tác dụng với hiệu suất tốt hơn._ –

2

Mỗi VirtualHost cần viết lại quy tắc riêng của mình quy định, trừ trường hợp:

  1. Bạn chỉ rõ RewriteOptions inherit trong mỗi VirtualHost hoặc
  2. Bạn sử dụng một chỉ thị include trong mỗi NGUỒN VirtualHost

: https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#RewriteEngine

Lưu ý rằng viết lại cấu hình không được thừa kế bởi host ảo

2

Theo các tài liệu Apache bạn có thể đặt cấu hình trong một .htaccess trong một -block <Directory>. http://httpd.apache.org/docs/2.2/howto/htaccess.html

Bạn nên tránh sử dụng tệp .htaccess hoàn toàn nếu bạn có quyền truy cập vào tệp cấu hình máy chủ chính httpd. Sử dụng các tệp .htaccess sẽ làm chậm máy chủ http Apache của bạn. Bất kỳ chỉ thị nào mà bạn có thể đưa vào tệp .htaccess được đặt tốt hơn trong khối Thư mục, vì nó sẽ có cùng hiệu ứng với hiệu suất tốt hơn.

Để giảm bớt quyền quản trị, tôi sẽ đặt các chỉ thị viết lại trong một tệp riêng biệt sau đó được đưa vào từng máy chủ ảo. Nó nên làm việc.

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