我想删除文件结尾(.html)和网址中的尾部斜杠。当用户输入请求ttp://example.com/jobs/director.html时,应将其重定向到http://example.com/jobs/director。这适用于大多数情况,但是当页面名称等于子目录的名称时,不会删除尾部斜杠,服务器会尝试解析这样的路径:/jobs/.html(本例中的请求是http://example.com/jobs/)。有人知道解决方案吗?我真的被卡住了。谢谢!
我的文件结构:
工作(目录)
作业/ artist.html
作业/ director.html
的index.html
jobs.html
我的.htaccess文件:
Options +FollowSymLinks
RewriteEngine On
DirectorySlash Off
# remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [R=301,L]
# remove .html file ending
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
答案 0 :(得分:0)
您可以使用:
Options +FollowSymLinks
RewriteEngine On
DirectorySlash Off
# remove trailing slash to non-directories
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/$ /$1 [R=302,L]
# add trailing slash internally to directories
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+?[^/])$ $1/ [L]
# add .html file ending internally
RewriteCond %{DOCUMENT_ROOT}/$1\.html -f
RewriteRule ^(.+?)/?$ $1.html [L]