2011-12-09 9 views
1

どこが間違っているのか分かりませんが、.tvで終わるすべてのファイルを.txtにリダイレクトする.htaccessファイルを書き込もうとしています。 (私はなぜ知らないが、私の拡張子は、バックファイルの名前を変更を主張している。罰金されており、それは別のことで必須ですので、プログラムをフェッチする。).htaccessを使用してファイルのファイル拡張子の名前を実質的に変更する

は、ここに私のファイル

Options +FollowSymlinks 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.txt -f 
RewriteRule ^(.*)$ $1.tsv 

だ今ファイルが内に常駐しますディレクトリ/googlebase/これは、この種の名前変更が必要なディレクトリです。したがって、このコードを/ディレクトリの.htaccessファイルに入れないことがわかりますが、何らかの理由で、私のブラウザは.htaccessを無視していますファイルを/googlebase/ディレクトリにコピーし、404ページにリダイレクトすることをお勧めします。

誰でも手助けできますか? .phpと.htmlの名前を変更するときにこの作業のようなコードを見たので、関係なく動作するはずです。 .tsvで終わるファイルは存在しますが、.tsvファイルに到達しようとする人は.txtファイルに移動してダウンロードするようにします。

答えて

1

ことはあなたのドキュメントルート(/)で、あなたの.htaccessファイルでこれを使用してみてください:

RewriteEngine On 
# check that the request isn't an existing directory 
RewriteCond %{REQUEST_FILENAME} !-d 
# check that the request is in the googlebase directory and ends with the .tsv extension 
RewriteCond %{REQUEST_URI} ^/googlebase/(.+)\.tsv$ 
# check if that extension was swapped with .txt, that file exists 
RewriteCond %{DOCUMENT_ROOT}/googlebase/%1.txt -f 
# rewrite the URI to replace .tsv with .txt 
RewriteRule ^googlebase/(.+)\.tsv /googlebase/$1.txt [L] 

TSV/TXTは、他の方法で回避した場合、私は、あなたがしようとしていた何を誤解している可能性が条件/ルールでそれらを変更することができます。


編集:私はあなたが持っていたものとの主な問題は、あなたが最後に追加 .TXT を要求 -f を確認したということでした

と思います。だから誰かが "/googlebase/foo.txt"を要求すると、 "/googlebase/foo.txt.txt"ファイルが存在するかどうかチェックされました。私が一致するコード(。+)。tsvそして、%1を逆参照として使用すると、要求の一部(%1 = foo)だけがfooになるので、.txtをファイルが存在するかどうかをチェックすると終了します。

+0

これは完全に機能します! .txtで終わるファイルの呼び出しが.tsvとして書き直されるようにしようとしていました。実際に存在する場合は、.tsvで終わるファイルのURLを書き換えないようにしてください。これは完全に機能します。 –

+0

私は最初にそれを試したときにどこかに間違った何かを入力しましたか? –

+0

答えに自分の編集を見る –

関連する問題