簡體   English   中英

如何隱藏網站網址的.html擴展名

[英]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.htmlfoo/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM