删除 .html 扩展名后添加尾部斜杠

删除 .html 扩展名后添加尾部斜杠

我的网站是非 www,它有子目录中的 wordpress以及一些静态网页其他子目录

  1. 我想从根目录中的网页和子目录中的其他静态网页中删除 .html 扩展名。
  2. 在末尾添加斜线。
  3. 301 从非斜线 URL 重定向到带斜线的 URL。

所以应该

/articles.html/文章/

/子目录/book.html/子目录/书/

下面的代码

  1. 使用非斜线结尾
  2. 将带斜线的 301 网址重定向到非

这是我的.htaccess

 <IfModule mod_rewrite.c>     
 Options +FollowSymLinks -MultiViews


RewriteEngine On     
RewriteBase /

#removing trailing slash
RewriteCond %{REQUEST_FILENAME} !-d    
RewriteRule ^(.*)/$ $1 [R=301,L]

#www to non
RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?domain\.com)$ [NC]
RewriteRule .? http://%1%{REQUEST_URI} [R=301,L]

#html
RewriteCond %{REQUEST_FILENAME} !-f     
RewriteCond %{REQUEST_FILENAME} !-d    
RewriteRule ^([^\.]+)$ $1.html [NC,L]

#index redirect 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/     
RewriteRule ^index\.html$ http://domain.com/ [R=301,L]
RewriteCond %{THE_REQUEST} \.html     
RewriteRule ^(.*)\.html$ /$1 [R=301,L] 
</IfModule>

PS:WordPress 一切正常,仅存在静态页面的问题。

先谢谢了

答案1

我似乎无法发表评论,但我猜 wordpress 有一个单独的 .htaccess 文件,其中包含额外的规则,以使这些页面正常工作。我猜你的静态页面需要额外的明确规则,这些规则可以添加到 .htaccess 或虚拟主机中,但在这两种情况下都应该看起来像: RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^staticpage1$ ./staticpage1.html RewriteRule ^staticpage2$ ./staticpage2.html

相关内容