我的网站是非 www,它有子目录中的 wordpress以及一些静态网页根和其他子目录
- 我想从根目录中的网页和子目录中的其他静态网页中删除 .html 扩展名。
- 在末尾添加斜线。
- 301 从非斜线 URL 重定向到带斜线的 URL。
所以应该
/articles.html到/文章/
和
/子目录/book.html到/子目录/书/
下面的代码
- 使用非斜线结尾
- 将带斜线的 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