2011-01-14 36 views
40

Tôi cần chạy tất cả các tệp .html của tôi dưới dạng tệp .php và tôi không có thời gian để thay đổi tất cả các liên kết trước bản trình bày của chúng tôi vào ngày mai. Có cách nào để "hack" này với máy chủ Apache của tôi?Sử dụng .htaccess để làm cho tất cả các trang .html chạy dưới dạng tệp .php?

+2

Mặc dù đây không phải là câu trả lời trực tiếp cho câu hỏi của bạn, bằng cách sử dụng 'sed' hoặc bất kỳ IDE tốt nào sẽ cho phép bạn tìm và thay thế toàn bộ thư mục/dự án. Ngoài ra, bạn có thể đổi tên hàng loạt các tập tin khá dễ dàng trên Linux. – coreyward

+0

Có nhưng nếu bạn đổi tên các tập tin bằng sed, bạn có thể nhận được nhiều liên kết bị hỏng. Tất nhiên, bạn cũng có thể cố gắng thay đổi tất cả các liên kết trong trang web của mình, nhưng cũng có các liên kết từ khắp nơi trên Internet có thể trỏ đến trang web của bạn. –

Trả lời

56

Tạo một file .htaccess tại thư mục gốc của trang web của bạn và thêm dòng này:

[Apache2 @ Ubuntu/Debian: sử dụng chỉ thị này]

AddType application/x-httpd-php .html .htm 

Hoặc, từ bình luận dưới đây:

AddType application/x-httpd-php5 .html .htm 

Nếu bạn đang chạy PHP như CGI (có lẽ không phải là trường hợp), bạn nên viết thay vì:

AddHandler application/x-httpd-php .html .htm 
+8

Tôi phải thêm '5' vào cuối loại để nó hoạt động, tức là'Ứng dụng AddType/x-httpd-php5 .html .htm' (CentOS chạy PHP 5.3) – melat0nin

+13

Điều này không hiệu quả đối với tôi. Nó làm cho Firefox muốn tải xuống tệp html và hiển thị nó. –

+1

@LeeBlake Tôi gặp vấn đề tương tự. Bất kỳ may mắn với điều này? –

2

đây đặt điều này trong .htaccess của bạn thông tin

AddType application/x-httpd-php .php .htm .html 

thêm về điều này page

+0

Tại sao chọn RemoveHandler? –

+0

, hãy kiểm tra lại mã của tôi. – andrewk

+0

ok .. RemoveHandler có thể không cần thiết – andrewk

5

Đối với bất cứ ai ngoài kia vẫn còn gặp khó khăn,

thử này (lưu trữ của tôi là từ Godaddy và đây là điều duy nhất làm việc cho tôi trong số tất cả các câu trả lời trên mạng.

AddHandler x-httpd-php5-cgi .html 
8

Trong Godaddy server của tôi đoạn mã sau làm việc

Options +ExecCGI 
AddType application/x-httpd-php .php .html 
AddHandler x-httpd-php5 .php .html 
+6

Tôi nghĩ rằng đề cập đến "Godaddy" cướp bạn khỏi vị trí đầu tiên của bạn. – Pacerier

3

Tôi nghĩ rằng đây là cách tốt nhất để chạy php script trên html và htm trang:

AddType application/x-httpd-php5 .html .htm 
3

Thông thường bạn nên thêm :

Options +ExecCGI 
AddType application/x-httpd-php .php .html 
AddHandler x-httpd-php5 .php .html 

Howeve r cho GoDaddy shared hosting (php-cgi), bạn cũng cần phải thêm vào các dòng sau:

AddHandler fcgid-script .html 
FCGIWrapper /usr/local/cpanel/cgi-sys/php5 .html 

Nguồn: Parse HTML As PHP Using HTACCESS File On Godaddy.

+0

Điều này làm việc với hostgator chia sẻ lưu trữ là tốt. Cảm ơn. –

+0

Tôi đang sử dụng godaddy và đó là người duy nhất làm việc cho tôi. những người khác không hoạt động hoặc tải xuống trang html mà không hiển thị trang đó! – lKashef

1

Sử dụng @ phương pháp Marc-François Firefox nhắc tôi để tải về tập tin html

Cuối cùng sau đang làm việc cho tôi (sử dụng cả hai):

AddType application/x-httpd-php .htm .html AddHandler x-httpd-php .htm .html

2

Bạn cũng có thể sử dụng H hoặc T cờ của mod_rewrite để buộc tất cả.file html để được phân tích bởi handler php:

sử dụng H (Handler) cờ:

RewriteEngine on 

RewriteRule \.(html|htm)$ - [H=application/x-httpd-php5] 

sử dụng T (Type) cờ:

RewriteEngine on 

RewriteRule \.(html|htm)$ - [T=application/x-httpd-php5] 

Hoặc bạn có thể thêm phần mở rộng cho quy tắc mẫu được tách bởi một đường ống | mà bạn muốn được phân tích bởi handler php

ví dụ:

RewriteRule \.(html|htm|txt|foo)$ - [T=application/x-httpd-php5] 

ví dụ trên sẽ thay đổi loại mime các tập tin kết thúc bằng .html, .htm, .txt , .foo tới php.

Lưu ý: trên một số máy chủ bạn sẽ phải thay đổi php5 để php để có được ví dụ này để làm việc trong chuỗi xử lý:

Thay đổi nó

[T=application/x-httpd-php5] 

để

[T=application/x-httpd-php] 
5

Bạn cần thêm dòng sau vào tệp cấu hình Apache của mình:

AddType application/x-httpd-php .htm .html 

Bạn cũng cần hai điều khác:

  1. phép Overridding

    Trong your_site.conf tập tin (ví dụ dưới /etc/apache2/mods-available trong trường hợp của tôi), thêm những dòng sau đây:

    <Directory "<path_to_your_html_dir(in my case: /var/www/html)>"> 
        AllowOverride All 
    </Directory> 
    
  2. Enable Viết lại Mod

    Chạy lệnh này trên máy tính của bạn:

    sudo a2enmod rewrite 
    

    Sau khi bất kỳ của những bước, bạn nên khởi động lại apache:

    sudo service apache2 restart 
    
-1
AddHandler application/x-httpd-php .php .html .htm 
// or 
AddType application/x-httpd-php .php .htm .html 
+1

Vui lòng sử dụng liên kết [chỉnh sửa] để giải thích cách mã này hoạt động và không chỉ cung cấp mã, vì giải thích có nhiều khả năng giúp người đọc trong tương lai. Xem thêm [trả lời]. [nguồn] (http://stackoverflow.com/users/5244995) –

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