静的ページのURLから.html
を削除する方法は?
また、.html
のあるURLをURLのないURLにリダイレクトする必要があります。 (つまり、www.example.com/page.html
からwww.example.com/page
)。
返信いただきありがとうございます。私はすでに問題を解決しました。 http://www.yoursite.com/htmlの下にページがあるとします。次の。htaccess ルールが適用されます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /html/(.*).html\ HTTP/
RewriteRule .* http://localhost/html/%1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /html/(.*)\ HTTP/
RewriteRule .* %1.html [L]
</IfModule>
ジョンの答えのいくつかの説明は建設的だと思います。以下:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
指定されたファイルまたはディレクトリがそれぞれ存在しない場合、書き換えルールが続行することを確認します。
RewriteRule ^(.*)\.html$ /$1 [L,R=301]
しかし、それはどういう意味ですか? regex(正規表現) を使用します。これは私が以前に作った小さなものです...
I思考それは正しい。
注:.htaccess
をテストするときは、301リダイレクトを使用しないでください。ブラウザが301をキャッシュするため、テストが完了するまで302を使用します。 https://stackoverflow.com/a/9204355/3217306 を参照してください
更新:私は少し間違えましたが、.
は改行を除くすべての文字に一致するため、空白も含まれます。また、 これは便利な正規表現チートシートです
ソース:
http://community.sitepoint.com/t/what-does-this-mean-rewritecond-request-filename-f-d/2034/2
https://mediatemple.net/community/products/dv/204643270/using-htaccess-rewrite-rules
Apacheで.htaccessを使用すると、次のようなリダイレクトを実行できます。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /$1 [L,R=301]
URLから.htmlを削除するには、単に.htmlなしでページにリンクします
<a href="http://www.example.com/page">page</a>
これはあなたのために働くはずです:
#example.com/page will display the contents of example.com/page.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]
#301 from example.com/page.html to example.com/page
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteRule ^(.*)\.html$ /$1 [R=301,L]
URLから.html拡張子を削除するには、root/htaccessで次のコードを使用できます。
RewriteEngine on
RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC]
RewriteRule ^ /%1 [NC,L,R]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [NC,L]
注:.php拡張子を削除するなど、他の拡張子を削除する場合は、上記のコードのhtml everywhereをphpに置き換えてください。
Options -MultiViews
も持っていることを確認する必要があります。
上記のいずれも、標準のcPanelホストでは機能しませんでした。
これはうまくいきました:
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
私はこの.htaccessを使用して、URLサイトから.html拡張子を削除します。これが正しいコードであることを確認してください。
RewriteEngine on
RewriteBase /
RewriteCond %{http://www.proofers.co.uk/new} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /$1.html [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.html$ http://www.proofers.co.uk/new/$1 [R=301,L]
RewriteRule /(.+)(\.html)$ /$1 [R=301,L]
これを試してください:)それが動作するかどうかわからない。