这就是我要的 -
当有人进入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页来代替。 它的工作原理,当我删除所有的重复写!
难道我搞砸了我重写? 我不是一个正则表达式的忍者!
尝试添加以下到您现有的.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?