2012-01-18 12 views
2

私はGoogleで問題を解決しようとしています。何も働いていません。私はちょうど私のURLからファイルの拡張子.shtmlを削除したいが何も動作しません。私はファイルが更新されていることを確認しました。私のウェブサイトはキャッシュから読み込まれていません。誰かが私がどこに間違っているのか教えてもらえますか?.htaccessファイル拡張子の削除が機能しません(多くのソリューションが試されました)

自分のウェブホスティング(Hostgator)にはApache mod_rewriteが有効になっていないと思いますか?

RewriteEngine On 

#Remove file extensions 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.shtml -f 
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.shtml [L] 

#Add trailing slash 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !# 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://mythofechelon.co.uk/$1/ [L,R=301] 

ヘルプは大歓迎です。

+2

最初にまず.htaccessが読み取られていることを確認してください。ガベージテキストを入力し、ブラウザで500エラーが発生するかどうかを確認します。 – anubhava

+0

私の質問のブロックは、ファイルのセグメントだけでした。他のコンポーネント(DirectoryIndexやErrorDocumentなど)は正常に動作します。 –

+0

しかし私はとにかくやった、そして、はい、私は500の内部サーバーエラーがあります。 –

答えて

1

は、代わりにこのコードを持っています。しかしhttp://domain.com/foo#aaaのも、URIがhttp://domain.com/foo/#aaaになることを心に留めておく

末尾が

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule . %{REQUEST_URI}/ [L,R=301] 

スラッシュ追加

# To externally redirect /dir/foo.shtml to /dir/foo 
RewriteCond %{THE_REQUEST} ^GET\s.+\.shtml [NC] 
RewriteRule ^(.+)\.shtml$ /$1 [R=301,L,NC] 

# To internally redirect /dir/foo to /dir/foo.shtml 
RewriteCond %{REQUEST_URI} !\.shtml$ [NC] 
RewriteCond %{REQUEST_FILENAME}.shtml -f 
RewriteRule . %{REQUEST_URI}.shtml [L 

ので、そこmod_rewriteから#を検出する方法はありません。これはブラウザによって完全に処理されるからです。

+0

これは完璧に機能しました!ありがとうございます! URLの末尾にスラッシュを付ける方法も知っていますか?そのコードは手動で入力したファイル拡張子 –

+0

大歓迎ですが、末尾にスラッシュを追加するコードを追加しましたが、 '#'にもスラッシュが付いているという警告があります。 – anubhava

+0

コードが機能しませんでしたその時:/ 私の主な目的は、ファイル拡張子を削除することでした。ありがとうございました! –

0
Options +MultiViews 

同じことをしますか?コードを削除し、あなたの拡張機能の代わりに

+0

これを#Removeファイル拡張ブロックに追加しても機能しませんでした。 –

+0

すべてのコードを置き換える必要があります。 – Gerben

+0

そのコードを除くすべてが削除され、それでも機能しませんでした。 : –

関連する問題