2012-01-17 8 views
6

ドメインをフォルダにマップする.htaccessがあります。PHPで.htaccessを編集する

RewriteEngine On 
RewriteBase/

# redirect mapped domain 
ReWriteCond %{HTTP_HOST} joshblease.uk.to 
ReWriteCond %{REQUEST_URI} !gme-index/ 
ReWriteRule ^(.*)$ gme-index/$1 [L] 

PHPを使用して追加のドメインマップを編集/追加する方法はありますか?

単純に、.htaccessファイルの内容を取得し、PHPスクリプトを使用して追加したいとします。

+0

Noooooooooooooooは編集しません。htaccessをPHPで実行すると、セキュリティ上の問題を尋ねているだけです... – Cyclone

+6

@Cyclone:正常に実行された場合、セキュリティ上のリスクはありません。 – ThiefMaster

+0

まだ何もありません。私はかなり長い間見てきました。私は初心者の開発者です。そのようなcpanelとhttpリダイレクトがどのように追加されています。 –

答えて

3

上記のコメントの1つに示すように、PHPコードから.htaccessを直接編集するのではなく、RewriteMapをここで使用する方が良いでしょう。ここではそれを使用する方法のサンプルです:

  1. httpd.confファイルに次の行を追加します

    RewriteMap domainMap txt://path/to/domain-dir.txt 
    
  2. このような/path/to/domain-dir.txtとしてテキストファイルを作成します。

    sub1 /subdir1 
    sub2 /foodir2 
    foo /bar 
    
  3. .htaccessファイルに次の行を追加してください。

    Options +FollowSymLinks -MultiViews 
    RewriteEngine on 
    RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC] 
    RewriteRule ^$ ${domainMap:%1} [L,R] 
    

事実上すべてこの手段は、所定の位置にこれらのリダイレクトを持つことです。

  • sub1.domain.com/ => sub1.domain.com/subdir1
  • sub2.domain.com/ => sub2.domain.com/foodir2
  • foo.domain.com/ => foo.domain.com/bar

利点:このセットアップで所定の位置に、あなたファイル/path/to/domain-dir.txtをmucとして編集または再作成できますあなたは巨大なセキュリティホールを開かずにPHPコードから望むように、PHPコードを直接編集することができます.htaccessを直接編集します。

+0

httpd.confファイルなしでこれを行うにはどうしますか?私は共有ホスティングしています。 –

+0

'RewriteMap'ディレクティブはhttpd.confファイルにしか入っていないので、残念ながらnoです。ただし、httpd.confの** **変更は**です。 – anubhava

3

これはあなたの状況のた​​めに働くことができます:

の.htaccess Ammend以下を見て:$ルールを想定し

RewriteEngine On 
RewriteBase/

# redirect mapped domain 
ReWriteCond %{HTTP_HOST} joshblease.uk.to 
ReWriteCond %{REQUEST_URI} !gme-index/ 
ReWriteRule ^(.*)$ gme-index/$1 [L] 

###CUSTOM RULES### 

PHPスクリプトはammendedする新しい生成規則を保持しています。

$htaccess = file_get_contents('/path/to/.htaccess'); 
$htaccess = str_replace('###CUSTOM RULES###', $rules."\n###CUSTOM RULES###", $htaccess); 
file_put_contents('/path/to/.htaccess', $htaccess); 

の例では、上記の.htaccess privledgesとスクリプトの権限に依存するだろう、理論で、テストされていません。

1

maindomain.com以外のドメインをdomain-nameと同じ名前のフォルダにマップするには、次のhtaccessを使用できます。代わりに、 ltdを除いたドメイン名にフォルダをマップします。

RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
ReWriteCond %{HTTP_HOST} !maindomain.com 
ReWriteCond %{HTTP_HOST} ^([^\.]*) 
ReWriteRule ^(.*)$ %1/$1 [L] 

あなたが望むものではありませんが、あなたのために働くかもしれないし、PHPを必要としません。

関連する問題