[英]How to hide .html extension from the website url
我知道之前已經問過這個問題,但有人知道隱藏.html擴展名的好方法。 我已經嘗試了許多代碼和https://stackoverflow.com/的許多答案,但我沒有看到結果。 那是我再次問你
我有一個靜態網站,我想刪除擴展名來清理我的網址。 我正在使用靜態html文件。
在刪除擴展程序之前,該網址將顯示為website.com/about.html
。
刪除擴展程序后,它看起來像website.com/about。 希望很清楚。
我有一個.htaccess文件,我嘗試了很多代碼,但它不起作用。 這是一些代碼
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /$1 [L,R=301]
RewriteCond %{THE_REQUEST} \ /(.+/)?index(\.html)?(\?.*)?\ [NC]
RewriteRule ^(.+/)?index(\.html)?$ /%1 [R=301,L]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.+)\.html$ /$1 [R=301,L]
RewriteCond %{SCRIPT_FILENAME}.html -f
RewriteRule [^/]$ %{REQUEST_URI}.html [QSA,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://%{HTTP_HOST}/ [R=301,L]
RewriteEngine On
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ $1.html [NC,L]
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
RewriteBase /
RewriteEngine on
RewriteRule ^(.*)\.htm$ $1.html [nc]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]
但是我沒有看到任何結果...... :(
您的規則已被撤銷(第一個規則將起作用):
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.html [L]
您的原始規則是RewriteRule ^(.*)\\.html$ $1 [L]
,它轉換為“如果請求的資源名稱以.html
結尾,則向瀏覽器發出重定向,告訴它詢問我們是否有任何相同的內容沒有HTML的名稱“。 這導致404(因為Apache沒有任何東西可以用於.html
'較少的資源)。
通過將.html
切換到目標RewriteRule ^(.*)$ $1.html [L]
我們將規則更改為“如果請求的資源名稱不是磁盤上的文件或目錄,則嘗試重新路由請求(在內部,不要告訴瀏覽器)好像它以.html
結尾“。
請注意,對於此類任務,您不需要復雜(本質上)RewriteRules。
mod_negotiation apache模塊(通常默認啟用)通過Multivews選項提供此類行為。
如果服務器收到/ some / dir / foo的請求並且/ some / dir / foo不存在,那么服務器會讀取名為foo。*的所有文件的目錄,並有效地偽造一個類型映射,該映射將所有這些命名為如果客戶端通過名稱請求其中一個文件,則為它們分配相同的媒體類型和內容編碼。 然后,它會根據客戶的要求選擇最佳匹配,並返回該文檔。
.IE請求foo/bar
將成為foo/bar
,如果我們的目錄,並將seak為foo/bar.html
, foo/bar.txt
和這樣等如不。
您只需要確保在當前上下文中激活此選項(例如,目錄)
Options +Multiviews
看看這篇文章http://alexcican.com/post/how-to-remove-php-html-htm-extensions-with-htaccess/我還沒有嘗試過,但演示似乎很有說服力
用這個
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.html [L,QSA]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.