2011-12-08 12 views
0

私のウェブサイトで、誰かがディレクトリを要求すると、 '/'を削除して '.html'を追加します(もちろん引用符は使用しません) 。ディレクトリ名をディレクトリ名にリダイレクトするhtaccessで

例:
誰かがdomain.com/directory/になった場合、それはdomain.com/directory.html/にリダイレクトする必要がありますし、同じのために立つ必要があります。domain.com/another-directory.htmlにリダイレクトする必要がありdomain.com/another-directory/

私は、任意のディレクトリ(/で終わるURL)が(もちろん/を取り除く)URL.htmlにリダイレクトようになります私のhtaccessファイルにコードの行(または2)を配置したいと思います。

視覚的にリダイレクトしたいので、実際には.htmlに変更されています。

私は非常に初心者のウェブプログラマーであり、どんな助けでも大歓迎です。

注:私はRedirect /directory /directory.htmlを使用しましたが、それは機能しましたが、余分なコーディングが必要となります。これは、htaccessファイルと少し難しいことになるだろう

+0

ちょうど 'directory'という名前のフォルダを作成し、その中に' directory.html'を入れて、index.html' 'へのファイルの名前を変更します。 – Gerben

+0

@Gerbenありがとうございますが、それは私が望むものではありません。 index.htmlファイルがたくさんあるとは思わない。私は私のホームページのために一つのindex.htmlファイルを持っていますが、各ディレクトリのインデックスは異なる名前を持っています。私は別の解決策を見つけることができない場合でも、私はあなたを使用します。 – Jakar

+0

'/ directory /'は実際には存在しますか?またはドキュメントルートに 'directory.html'というファイルがあり、それをディレクトリのように見せたいのですか? –

答えて

1

、私はあなたが次のことをやりたいと仮定します。

  1. 誰かがルート(単にhttp://domain.com/)ではないディレクトリにアクセスする場合は、それらをリダイレクトします.htmlで終わるディレクトリ名
  2. getがリダイレクトされた後、内部で.html )をディレクトリに書き直し、apacheがディレクトリを提供できるようにします。

まず一つは単純です:あなたがちょうど持っていることは、directory.htmlと呼ばれるファイルの束であるdirectory2.htmldirectory3.html場合

# check to make sure the request isn't actually for an html file 
RewriteCond %{THE_REQUEST} !^([A-Z]{3,9})\ /(.+)\.html\ HTTP 
# check to make sure the request is for a directory that exists 
RewriteCond %{REQUEST_FILENAME} -d 
# rewrite the directory to 
RewriteRule ^(.+)/$ /$1.html [R] 

第二の部分は、しかし

# check to make sure the request IS for an html file 
RewriteCond %{THE_REQUEST} ^([A-Z]{3,9})\ /(.+)\.html\ HTTP 
# See if the directory exists if you strip off the .html 
RewriteCond %{DOCUMENT_ROOT}/%2 -d 
# Check for an internal rewrite token that we add 
RewriteCond %{QUERY_STRING} !r=n 
# if no token, rewrite and add token (so that directories with index.html won't get looped) 
RewriteRule ^(.+)\.html /$1/?r=n [L,QSA] 

トリッキーですあなたがそのアドレスに http://domain.com/directory2/を入力したときにそのようにしたいと思っていますba R彼らは directory2.htmlの内容を務めます、それははるかに簡単になります。

# check to make sure the request isn't actually for an html file 
RewriteCond %{THE_REQUEST} !^([A-Z]{3,9})\ /(.+)\.html\ HTTP 
# check to see if the html file exists (need to do this to strip off the trailing /) 
RewriteCond %{REQUEST_URI} ^/(.+)/$ 
RewriteCond %{DOCUMENT_ROOT}/%1.html -f 
# rewrite 
RewriteRule ^(.+)/$ /$1.html [L] 
+0

それはうまくいっていて、大きな助けとなりました。どうもありがとうございました。 – Jakar

関連する問題