2011-06-15 29 views
5

Điều tôi đang cố gắng thực hiện là tự động hóa quá trình phát trực tiếp với các trang web. Những trang web này đều tự động được tạo ra sử dụng htaccess, vì vậy đây là một ví dụ:Sử dụng PHP để tự động thêm vào tệp .htaccess?

RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC] 
RewriteRule ^(.*)$ /folder%{REQUEST_URI}?%{QUERY_STRING} [QSA,L] 

Những gì tôi làm là thêm một bí danh tên miền cho domain.com, và sau đó trỏ nó đến IP máy chủ của tôi và làm cho file .htaccess nó xem những gì có trong thư mục /.

Nó hoạt động tốt nhưng chúng tôi đang có kế hoạch để có hàng trăm trang web và thêm đoạn mã vào htaccess theo cách thủ công có thể nhận được khá khó chịu. Vì tất cả những gì tôi thay đổi là domain.com/thư mục, có cách nào để sử dụng PHP để tự động thêm vào cuối tệp .htaccess nếu tôi tạo biểu mẫu và cho biết tên miền và thư mục, nó sẽ thêm nó vào dưới cùng của tập tin htaccess?

Điều đó sẽ tiết kiệm rất nhiều thời gian.

Cảm ơn rất nhiều.

+4

Có thể, nhưng hãy lưu ý đến các rủi ro bảo mật và mục trùng lặp. – CSchulz

Trả lời

26

Tôi thực sự không khuyên bạn nên cho phép php thêm ANYTHING vào .htaccess, đó là một rủi ro bảo mật lớn.

//but here is your code 
$f = fopen(".htaccess", "a+"); 
fwrite($f, "your content"); 
fclose($f); 
+8

-1 cho các yêu cầu bảo mật hoàn toàn không được chứng thực. – mario

+0

@mario: Bạn không thấy điều đó "Tôi thực sự không khuyên bạn nên cho phép php thêm ** ANYTHING ** vào .htaccess, đó là một nguy cơ bảo mật lớn"? mà không có mã, câu trả lời của tôi sẽ bị xóa – genesis

+0

@mario: Tôi đã nói "Tôi không recomment làm". Nếu luôn luôn là một rủi ro lớn và thậm chí một sai lầm nhỏ có thể là thiên đường lừa đảo – genesis

4

Chắc chắn. Nó chỉ là một tập tin miễn là quá trình có quyền ghi vào tập tin.

6

Ở đây bạn đi:

function writeht($domain, $folder) 
{ 
    $fp = fopen('.htaccess','a+'); 
    if($fp) 
    { 
     fwrite($fp,' 

RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{HTTP_HOST} ^(www\.)?'.str_replace('.','\.',$domain).'$ [NC] 
RewriteRule ^(.*)$ /'.$folder.'%{REQUEST_URI}?%{QUERY_STRING} [QSA,L]'); 
     fclose($fp); 
    } 
} 

//usage: writeht("domain.biz","yourfolder"); 

trình tốt cho tôi với 0644 quyền trên .htaccess (như php chạy theo người sử dụng tương tự như chủ sở hữu tệp)

+0

Cảm ơn bạn rất nhiều. Điều này làm việc tuyệt vời. Tôi biết đây là một nguy cơ bảo mật lớn, điều gì có thể xảy ra? – Drew

+0

nếu bạn thấy điều này hữu ích, bạn có thể chấp nhận câu trả lời. Cho đến khi quyền của bạn trên '.htaccess' vẫn còn là 0644 thì đây không phải là một nguy cơ bảo mật. (chức năng giả định sẽ chỉ được gọi bởi những người đáng tin cậy) – technology

+0

OK Tôi đã chấp nhận nó! Một câu hỏi mặc dù, nó không làm việc cho tôi tại 0644 nhưng nó hoạt động khi tôi làm 0666. Bất kỳ ý tưởng tại sao? Có nguy cơ bảo mật cao hơn ở 666 không? – Drew

2

Một cách khá thoải mái đang sử dụng PEAR class File_HtAccess. Nhưng như đã nói trước khi bạn không nên viết tập tin từ một PHP-Script có thể truy cập thông qua web.

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