Nat*_*sha 5 php apache .htaccess mod-rewrite url-rewriting
我知道这个问题以前曾被问过,但有人知道隐藏 .html 扩展名的好方法吗?我已经尝试了许多代码和https://stackoverflow.com/中的许多答案,但没有看到结果。那是我再问你一次
我有一个静态网站,我想删除扩展程序以清理我的网址。我正在处理静态 html 文件。
在删除扩展程序之前,该 url 将显示为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]
Run Code Online (Sandbox Code Playgroud)
但是我没有看到任何结果...:(
你的规则被颠倒了(否则第一个规则会起作用):
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.html [L]
Run Code Online (Sandbox Code Playgroud)
您最初的规则是,RewriteRule ^(.*)\.html$ $1 [L]翻译为“如果请求的资源名称以以下结尾,.html则向浏览器发出重定向,告诉它询问我们是否有任何不带 HTML 的同名内容”。这会导致 404(因为 Apache 没有任何东西可以为.html“较少的资源”提供服务)。
通过切换.html到目标,RewriteRule ^(.*)$ $1.html [L]我们将规则更改为“如果请求的资源名称不是磁盘上的文件或目录,则尝试重新路由请求(在内部,不要告诉浏览器),就好像它以“结尾.html” 。