如何配置.htaccess文件的重写规则摆脱扩展,结尾的斜杠,WWW?(How to configu

2019-10-28 16:15发布

这就是我要的 -

当有人进入site.com/page.php或site.com/page或site.com/page/,都应该工作一样,并在地址栏中显示的URL应site.com/page [我不状延伸和结尾的斜杠]

我也想摆脱从网址栏中的WWW的,因为它是不必要的。

这是我目前的.htaccess文件重写规则 -

RewriteEngine on
RewriteCond %{HTTP_HOST} ^site\.com
RewriteRule ^(.*)$ http://www.site.com/$1 [R=permanent,L] 

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

这解决了www和扩展的问题,但没有结尾的斜线一个!

但是,更重要的是,我最近在site.com/blog WordPress安装,但每当我尝试访问,我重定向到404页来代替。 它的工作原理,当我删除所有的重复写!

难道我搞砸了我重写? 我不是一个正则表达式的忍者!

Answer 1:

尝试添加以下到您现有的.htaccess文件的顶部,上面的任何现有的规则,例如WordPress的规则。

RewriteEngine on
RewriteBase /

#if the host is not site.com, e.g www.site.com
RewriteCond %{HTTP_HOST} !^site\.com$ [NC]
#then redirect to site.com e.g to remove the www
RewriteRule ^(.*)$ http://site.com/$1 [R=301,L] 

#if the URL ends with a slash
RewriteCond %{REQUEST_URI} ^/(.+)/$
#redirect to URL without slash
RewriteRule . http://site.com/%1 [R=301,L] 

#skip wordpress site which starts with blog
RewriteCond %{REQUEST_URI} !^/blog [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]


文章来源: How to configure .htaccess file for rewrite rules to get rid of extensions, trailing slashes, www?