你的問題有點模糊,所以我將集中討論你提到的主要問題:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !/.+\.html
RewriteRule ^/?([^/]+)$ $1.html [L]
替代做法:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^/?([^/]+)$ $1.html [L]
如果這僅限於單個主機名(因爲您的示例可能建議)取決於您的設置。如果您將規則放置在您的http服務器的真實主機配置中,而不是使用.htaccess
樣式文件,則此類事情最容易完成。這也是爲什麼我添加的一般提示:
你應該總是喜歡在http服務器主機配置,而不是使用.htaccess
樣式文件中這樣的規則。這些文件出了名的錯誤,很難調試,他們真的放慢了服務器。它們僅提供作爲的情況下最後的選擇,你沒有對主機配置控制(讀:真的很便宜的託管服務提供商),或者如果你有依賴於寫自己的重寫規則(這是一個明顯的安全惡夢的應用)。
在你寫,你也想力短符號的評論,所以重定向用戶請求一個URL這樣的「文件擴展名」的版本沒有。
我實在看不出任何一點這樣的,但可以肯定的是可能的:
RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} !^.
RewriteRule ^. - [L]
RewriteCond %{REQUEST_URI} ^/.+\.html$
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^/?(.+)\.html$ /$1 [L,R=301]
RewriteCond %{REQUEST_URI} !^/.+\.html$
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^/?([^/]+)$ /$1.html [L]
請問的問題更具體的方式。目前這個問題非常廣泛而且很難回答。爲什麼你的_specific_問題?爲什麼不能簡單地修改其中一個工作示例並根據需要進行調整? – arkascha