2017-03-07 43 views
1

我不能建立一个301重定向重写规则删除域名WWW和从网址中删除斜杠。.htaccess中去除WWW,湿地+ 301重定向

预先感谢您的协助。

例子:

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

您可以使用此:

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会添加一个尾部斜线。如果你想删除这个斜杠,那么你将需要使用下面的指令htaccess的

DirectorySlash off 

这告诉Apache忽略斜线,你可以带或不带尾随斜线访问您现有的迪尔斯。

+0

谢谢您的帮助。 www和斜杠很好地删除,但是cons把我重定向到可见的.php页面。有没有办法隐藏.php扩展名? – StackOverflowCom

+0

我为您的.php文件添加了一条规则。请重新加载页面以查看它。 – starkeen

+0

非常感谢你的帮助。 我将继续查阅Apache文档以更好地理解标志的使用。 – StackOverflowCom