Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache Htaccess删除WWW和斜杠+;301重定向_Apache_.htaccess_Redirect_Mod Rewrite - Fatal编程技术网

Apache Htaccess删除WWW和斜杠+;301重定向

Apache Htaccess删除WWW和斜杠+;301重定向,apache,.htaccess,redirect,mod-rewrite,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\

我无法建立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]
您可以使用以下选项:

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忽略斜杠,您可以使用斜杠或不使用斜杠访问现有的目录。

谢谢您的帮助。www和斜杠很好地删除了,但是cons将我重定向到带有visible.php的页面。有没有办法隐藏.php扩展名?我为你的.php文件添加了一条规则。请重新加载页面以查看它。非常感谢您的帮助。我将继续查阅Apache文档,以更好地了解标志的使用。