2017-07-25 19 views
0

末尾のスラッシュを、ファイル拡張子のあるファイル拡張子がある.txtのURLから削除しようとしています。ここでmod_rewrite:特定のファイルの末尾のスラッシュを削除します。

がいっぱいの.htaccessファイルです:

RewriteEngine On 
RewriteBase/

RewriteCond %{THE_REQUEST} (.*)\.txt.html 
RewriteRule ^(.)\.txt.html /$1.txt [R=301,L] 

RewriteCond %{THE_REQUEST} (.)\.txt 
RewriteRule ^(.)\.txt $1.txt.html [L] 

RewriteCond %{THE_REQUEST} (.)\.txt/ 
RewriteRule ^(.*)\.txt\/ $1.txt [R=301] 

すべてが.txt/のためのルールは、URLへの完全なパスを追加していることを除いて結構です。相対パスで動作させることは可能ですか?例えば

、このURL

http://test.local:8080/doc/Cons/Bo/Dwnlds/Test.txt/

この

http://test.local:8080/Users/dev1/Documents/96/test.org/doc/Cons/Bo/Dwnlds/Test.txtに行きます。

この問題を解決するにはどうすればよいですか?

答えて

1

あなたは結果として、したがって奇妙なファイルシステムパス、(.*)がそれを含まないので、あなたのターゲットに先頭のスラッシュを追加する必要があります。

RewriteRule ^(.*)\.txt\/ /$1.txt [R=301] 

場合、それは実際にはファイルシステムのパスにあるためRewriteRulesのデフォルトは起こります存在します(あなたの場合、ベースフォルダがないため、ターゲットがURLパスかファイルシステムパスかを判断するのは難しい)。これらのドキュメントをhttp://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule

+0

ありがとうございます。私はそれを行って返信します。 – varnie

+0

右、それはトリックを作った。 – varnie

関連する問題