.html
静的ページのURL から削除する方法は?
また、URLのあるURLをURLのないURLにリダイレクトする必要があり.html
ます。(すなわちwww.example.com/page.html
までwww.example.com/page
)。
.html
静的ページのURL から削除する方法は?
また、URLのあるURLをURLのないURLにリダイレクトする必要があり.html
ます。(すなわちwww.example.com/page.html
までwww.example.com/page
)。
回答:
ジョンの答えのいくつかの説明は建設的だと思います。以下:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
指定されたファイルまたはディレクトリがそれぞれ存在しない場合、書き換えルールが続行することを確認します。
RewriteRule ^(.*)\.html$ /$1 [L,R=301]
しかし、それはどういう意味ですか?これは、使用する正規表現(正規表現を)。ここに私が以前に作った小さなものがあります...
それは正しいと思います。
注:テスト時に.htaccess
は、301リダイレクトを使用しないでください。ブラウザが301をキャッシュするため、テストが完了するまで302を使用します。https://stackoverflow.com/a/9204355/3217306を参照してください
更新:少し誤解しました.
。改行以外のすべての文字に一致するため、空白が含まれます。また、これは役立つ正規表現チートシートです
出典:
http://community.sitepoint.com/t/what-does-this-mean-rewritecond-request-filename-fd/2034/2
https://mediatemple.net/community/products/dv/204643270/using-htaccess-rewrite-rules
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をphpに置き換えてください。
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>
!-f
これはあなたのために働くはずです:
#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]
あなたも持っOptions -MultiViews
ていることを確認する必要があります。
上記のいずれも、標準のcPanelホストでは機能しませんでした。
これはうまくいきました:
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
お返事ありがとうございます。私はすでに問題を解決しました。私のページが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>
私はこの.htacessを使用して、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]
RewriteBase /
少しでした。残念ながら、なぜ機能したのかはわかりませんが、すぐにわかると思います。
Firebaseホスティングを使用しているユーザーの場合、このページではどの回答も機能しません。.htaccess
Firebaseホスティングでは使用できないためです。firebase.jsonファイルを構成する必要があります。"cleanUrls": true
ファイルに行を追加して保存するだけです。それでおしまい。
行を追加すると、firebase.jsonは次のようになります。
{
"hosting": {
"public": "public",
"cleanUrls": true,
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
]
}
}
URLから.html拡張子を削除するには、root / htaccessで次のコードを使用できます。
#mode_rerwrite start here
RewriteEngine On
# does not apply to existing directores, meaning that if the folder exists on server then don't change anything and don't run the rule.
RewriteCond %{REQUEST_FILENAME} !-d
#Check for file in directory with .html extension
RewriteCond %{REQUEST_FILENAME}\.html !-f
#Here we actually show the page that has .html extension
RewriteRule ^(.*)$ $1.html [NC,L]
ありがとう