用htaccess删除尾部斜杠

时间:2015-10-12 11:17:50

标签: regex apache .htaccess

我想删除文件结尾(.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]

1 个答案:

答案 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]