2012-02-13 16 views
4

最近、htaccessを使用して自分のウェブサイトのURLを変更して、URLにファイル拡張子が表示されないようにしました。今私の問題は、私のURLが拡張されないように新しいXMLサイトマップを作成したことです! Googleのウェブマスターツールは、重複したコンテンツの問題について教えています。すなわち、ページとpage.htmlは同じタイトルです....私の質問はどのように私はファイル拡張子htmlでURLをリダイレクトして拡張子を持つURLにリダイレクトするのですか? これは私が拡張子がhtmlのファイルを拡張子なしのファイルにリダイレクトする(URLで)

http://www.shenazhpeyk.co.uk/coding-machines

にリダイレクトし、変更したいHTMLの拡張

http://www.shenazhpeyk.co.uk/coding-machines.html

で私のウェブサイトのURLの一例ですので、それは(Googleウェブマスターツールの問題をしてください修正します私にhtaccessファイルで使用するコードを提供してください)

多くのありがとう

+0

も参照してくださいhttp://stackoverflow.com/questions/9250356/how-to-redirect-file-php-to-file-but-make-file-point-to-file-php/9250387 – Gerben

答えて

0

サイトのルートディレクトリにある.htaccessファイルに次のURLを追加して、.htmlというURLをリダイレクトして削除してください。

RewriteEngine on 
RewriteBase/

#redirect to remove the .html extension 
RewriteRule ^(.+)\.html$ $1 [L,NC,R=301] 
+0

返信ありがとうしかし、私は次のエラーが発生しています:ページが正しくリダイレ​​クトされていませんこれは私が以前から持っていたものですが、動作しますが、拡張子なしでHTMLページをリダイレクトしませんRewriteEngine On RewriteCond%{REQUEST_FILENAME}!-f RewriteRule^([^ \。] +)$ $ 1.html [NC、L] –

+0

よろしく!解決策を見つけました! –

+2

他の誰かが同じ問題を抱えている場合に備えて、解決策が見つかりました!笑! オプションのRewriteCondの%{SCRIPT_FILENAME}/-d するRewriteCond%{SCRIPT_FILENAMEが} .htmlの! -fのRewriteRule [^ /] $の%{REQUEST_URI}/[R = 301に+ FollowSymLinksを-MultiViews DirectorySlashオフ RewriteEngine 、L] するRewriteCond%{ENV:REDIRECT_STATUS}^$ するRewriteRule^\ HTML $/$ 1 [R = 301、L] するRewriteCondの%{SCRIPT_FILENAME} .htmlの-f のRewriteRule [^ /(+。)。 ] $%{REQUEST_URI} .html [QSA、L] 注:正しく書いても機能しているかどうかは不明です! –

1

これを試してみてください:

Options +FollowSymLinks -MultiViews 
DirectorySlash Off 

RewriteEngine On 

RewriteCond %{SCRIPT_FILENAME}/ -d 
RewriteCond %{SCRIPT_FILENAME}.html !-f 
RewriteRule [^/]$ %{REQUEST_URI}/ [R=301,L] 

RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteRule ^(.+)\.html$ /$1 [R=301,L] 

RewriteCond %{SCRIPT_FILENAME}.html -f 
RewriteRule [^/]$ %{REQUEST_URI}.html [QSA,L] 
1

だけでなく、このコードを発見しました。それが同じことを達成するかどうかは分かりません。上記のように私のために働くと思われます(PHP用)。

RewriteEngine On 

# Unless directory, remove trailing slash 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/$ /$1 [R=301,L] 

# Redirect external .php requests to extensionless url 
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ 
RewriteRule ^(.+)\.php$ /$1 [R=301,L] 

# Resolve .php file for extensionless php urls 
RewriteRule ^([^/.]+)$ $1.php [L] 

後続のスラッシュと、それらが存在するか省略されるべきかについては疑問に思っていますか?

+0

私はパーティーに遅刻していますが、あなたはファイル拡張子を持たないページにどのようにリダイレクトしたのでしょうか?私はあなたのコードを本当に愛し、今すぐ使用しています。 –

関連する問題