从域中删除www并强制删除扩展名

时间:2015-05-19 19:57:18

标签: apache .htaccess mod-rewrite

我有一些规则,目前剥离了我网站的文件扩展名,另外还有一条删除www部分的规则。但是,如果我要访问www.mydomain.co.uk/work,则会加载www.mydomain.co.uk/work.php

我的htaccess:

# strips the www from URL
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI}/$1 [R=301,NE,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+)$ $1.php [L,QSA]

1 个答案:

答案 0 :(得分:1)

您应首先针对您的域制作第一个,并且不会出现此问题。并且您在重写规则中同时使用REQUEST_URI和捕获的URI。以这种方式尝试规则。

# strips the www from URL
RewriteCond %{HTTP_HOST} ^www\.yoursite\.com$ [NC]
RewriteRule ^(.*)$ http://yoursite.com/$1 [R=301,NE,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+)$ $1.php [L,QSA]