Htaccess删除WWW和Slash + 301重定向

时间:2017-03-07 13:05:41

标签: apache .htaccess redirect mod-rewrite

我无法构建301重定向重写规则来从域名中删除WWW并从URL中删除斜杠。

提前感谢您的帮助。

示例:

www.domain.com/      to  domain.com
domain.com/          to  domain.com
domain.com/page/     to  domain.com/page
domain.com/page.php  to  domain.com/page

我的代码:

RewriteCond %{HTTP_HOST} ^(www.)?domain\.com$ [NC]
RewriteRule ^(.*)/$ http://%{HTTP_HOST}/$1 [R=301,L]

RewriteRule ^/(.*)/$ /$1 [NC,L]

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

1 个答案:

答案 0 :(得分:1)

您可以使用:

body 
{
font-size: 17px;
background: url(https://www.tcia.org/images/TCIExpo/backgrounds/back-a3.jpg)
top  center  no-repeat;background-attachment: fixed;            
background-color: #aaba59;
width: 100%;
height: 100%;
position: absolute;
}

请注意,这不会从现有目录中删除尾部斜杠。当您请求现有目录时,Apache会添加一个尾部斜杠。如果要删除此斜杠,则需要在htaccess

中使用以下指令
RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^ http://example.com%{REQUEST_URI} [NE,L,R]
#remove trailing slash
RewriteRule ^(.+)/$ /$1 [L,R]
#remove .php ext
RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
RewriteRule ^ /%1 [L,R]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ /$1.php [L]

这告诉apache忽略斜线,您可以使用或不使用尾部斜线访问现有的目录。