Htaccess – 删除 html 扩展 + 添加尾部斜杠 + 在子文件夹中查找索引(组合)
Htaccess – remove html extension + add trailing slash + find index inside subfolder (combined)
这个问题我已经纠结了一个星期了。
我的网站根目录是这样的:
index.html
page.html
subfolder/index.html
subfolder/page.html
我已经阅读了大量关于做这 3 件事的帖子。我实际上可以单独完成它们,但我不知道如何将它们组合起来!
- 删除
.html
扩展程序
- 自动在子文件夹
中寻找index.html
- 在
URL
的末尾添加斜杠(即 www.domain.com/subfolder/page.html
到 www.domain.com/subfolder/page/
如果在写 www.domain.com/page.html
时 URL
会自动更改为 www.domain.com/page/
那就太棒了
提前致谢!
我目前的 htaccess:
RewriteEngine on
RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC]
RewriteRule ^ /%1 [NC,L,R]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/$ .html [NC,L]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [NC,L]
用这个替换你所有的代码块:
DirectoryIndex index.html
RewriteEngine on
# redirect file.html to /file/
RewriteCond %{THE_REQUEST} \s/+(.+?)\.html\s [NC]
RewriteRule ^ /%1/ [R=302,NE,L]
# added .html extension to /file by checking presence of file.html
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/.html -f
RewriteRule ^(.+?)/?$ .html [L]
这个问题我已经纠结了一个星期了。
我的网站根目录是这样的:
index.html
page.html
subfolder/index.html
subfolder/page.html
我已经阅读了大量关于做这 3 件事的帖子。我实际上可以单独完成它们,但我不知道如何将它们组合起来!
- 删除
.html
扩展程序 - 自动在子文件夹 中寻找
- 在
URL
的末尾添加斜杠(即www.domain.com/subfolder/page.html
到www.domain.com/subfolder/page/
index.html
如果在写 www.domain.com/page.html
时 URL
会自动更改为 www.domain.com/page/
提前致谢!
我目前的 htaccess:
RewriteEngine on
RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC]
RewriteRule ^ /%1 [NC,L,R]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/$ .html [NC,L]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [NC,L]
用这个替换你所有的代码块:
DirectoryIndex index.html
RewriteEngine on
# redirect file.html to /file/
RewriteCond %{THE_REQUEST} \s/+(.+?)\.html\s [NC]
RewriteRule ^ /%1/ [R=302,NE,L]
# added .html extension to /file by checking presence of file.html
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/.html -f
RewriteRule ^(.+?)/?$ .html [L]