2011-06-15 20 views
5

私がしようとしているのは、ウェブサイトでのライブプロセスを自動化することです。これらのウェブサイトはすべて動的にhtaccessファイルを使用して作成されるので、ここでは一例です:PHPを使用して動的に.htaccessファイルを追加しますか?

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

私は何をするdomain.comためにドメインエイリアスを追加し、私のサーバーのIPとのhtaccessファイルになりにそれを指しています/フォルダーにあるものを表示します。

これはうまくいきますが、私たちは何百ものウェブサイトを持ち、手動でhtaccessにコードを追加するとかなり迷惑をかけることになります。私が変更しているのはdomain.com/フォルダですから、フォームを作成してドメインとフォルダに伝えたら、PHPを.htaccessファイルの下に動的に追加する方法がありますか。 htaccessファイルの最後に追加しますか?

これで時間が大幅に節約できます。

ありがとうございます。

+4

はい、可能ですが、セキュリティリスクと重複しているエントリに注意してください。 – CSchulz

答えて

26

私は実際にはPHPをANYTHINGを.htaccessに追加することを推奨していません。これは大きなセキュリティリスクです。

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

-1完全に実証されていないセキュリティクレームについては、 – mario

+0

@mario:大きなことはわかりません。「PHPが**何かを.htaccessに追加するのは本当にお勧めできません。大きなセキュリティ上の危険ですか?コードなしで、私の答えは削除されます – genesis

+0

@mario:私は "私は命令しない"と言った。常に大きなリスクと小さな間違いでさえフィッシング・パラダイスになる可能性がある場合 – genesis

4

プロセスがファイルへの書き込み権限を持っている限り、その別のファイルです。

6

ここに行く:.htaccess0644権限(PHPはファイルの所有者と同じユーザーの下で実行される)

+0

ありがとうございます。これはうまくいった。私はこれが大きなセキュリティ上のリスクであることを知っています。 – Drew

+0

これが役に立つとわかったら、その答えを受け入れることができます。 '.htaccess'に対するあなたのパーミッションが0644のままになるまで、これはセキュリティリスクではありません。 (機能は信頼できる人だけが呼び出すと仮定します) – technology

+0

OK私はそれを受け入れました! 1つの質問しかし、それは0644で私のために働いていないが、0666を行うときに動作します。 666でセキュリティ上のリスクが増えていますか? – Drew

2

かなり快適な方法で私のために

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"); 

作品罰金を使用していますPEARクラスFile_HtAccess。しかし、前に説明したように、Webからアクセス可能なPHPスクリプトからファイルを書き込むべきではありません。

関連する問題