Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
.htaccess从URL删除WWW+;名录_.htaccess_Url_Mod Rewrite_No Www - Fatal编程技术网

.htaccess从URL删除WWW+;名录

.htaccess从URL删除WWW+;名录,.htaccess,url,mod-rewrite,no-www,.htaccess,Url,Mod Rewrite,No Www,这似乎对许多人来说都不是问题(阅读:我找不到答案),但我想更新以下htaccess代码,不仅从URL中删除“www”,而且还删除所有被访问的子目录 RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 使用此选项,解析很好,但我希望它重定向到根目录。我认为您很接近,但请尝试以下操作: # force non-www domain RewriteCo

这似乎对许多人来说都不是问题(阅读:我找不到答案),但我想更新以下htaccess代码,不仅从URL中删除“www”,而且还删除所有被访问的子目录

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

使用此选项,解析很好,但我希望它重定向到根目录。

我认为您很接近,但请尝试以下操作:

# force non-www domain
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule (.*) http://example.com/$1 [R=301,L]
我不确定你到底是指子目录,但这是你的例子。

我也有同样的问题(无法从指向附加域上子目录的URL中剥离“www”),但经过一些尝试和错误后,这似乎对我有效:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]

您好,代码运行得很好,除了它在url中与www一起传递,并带有一些值,最后用斜杠表示url中的参数和值。


重新启动引擎
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml
RewriteCond%{REQUEST\u FILENAME}-f
RewriteCond%{REQUEST\u FILENAME}-d
RewriteRule^(!.(\.gif\.jpg\.png\.swf\.css\.js\.txt\.php\.htm\.html)\+[^/])$/$1/[R=301,NC]
RewriteRule^(.[^.*]+)\/$?jogar=$1[NC]
选项-索引
Options+FollowSymLinks
RewriteCond%{HTTP\u HOST}^www\.(.*)$[NC]
RewriteRule^(.*)$http:\/\/%1%{REQUEST\u URI}[R=301,QSA,NC,L]

我使用了它,它对我很有用

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

示例:->

非www=>www和相对www=>non-www的重定向代码。在.htaccess文件中没有硬编码域和方案。因此,源域和http/https版本将被保留

APACHE 2.4及更新版本 非WWW=>WWW:

重新编写引擎打开
重写cond%{HTTP_HOST}^www\。[北卡罗来纳州]
重写规则^%{REQUEST_SCHEME}://www.%{HTTP_HOST}%{REQUEST_URI}[R=301,L]
WWW=>非WWW:

重新编写引擎打开
重写条件%{HTTP_HOST}^www\.(.*)$[NC]
重写规则^%{REQUEST\u SCHEME}://%1%{REQUEST\u URI}[R=301,L]
注意:在Apache2.2上不工作,%{REQUEST_SCHEME}不可用。为了与Apache2.2兼容,请使用下面的代码或将%{REQUEST_SCHEME}替换为固定的http/https


APACHE 2.2及更新版本 非WWW=>WWW:

重新编写引擎打开
重写条件%{HTTPS}关闭
重写cond%{HTTP_HOST}^www\。[北卡罗来纳州]
重写规则^http://www.%{HTTP_HOST}%{REQUEST_URI}[R=301,L]
在上重写cond%{HTTPS}
重写cond%{HTTP_HOST}^www\。[北卡罗来纳州]
重写规则^https://www.%{HTTP_HOST}%{REQUEST_URI}[R=301,L]
。。。或更短的版本

重新编写引擎打开
重写cond%{HTTP_HOST}^www\。[北卡罗来纳州]
重写cond%{HTTPS}s^ on(s)| offs
重写规则^http%1://www.%{http_HOST}%{REQUEST_URI}[R=301,L]
WWW=>非WWW:

重新编写引擎打开
重写条件%{HTTPS}关闭
重写条件%{HTTP_HOST}^www\.(.*)$[NC]
重写规则^http://%1%{REQUEST_URI}[R=301,L]
在上重写cond%{HTTPS}
重写条件%{HTTP_HOST}^www\.(.*)$[NC]
重写规则^https://%1%{REQUEST_URI}[R=301,L]

。。。无法使用较短的版本,因为%N仅在上一次重写时可用…

我使用此代码。如果我的访问者的url中没有www,则此条件会添加带有url的www,否则无需添加带有url的www(因为他已经有了。:)


很抱歉,我的意思是,应该分别重定向到和。当前的设置只允许根目录重定向。我刚刚在另一个域中尝试了它,它确实有效。我很好奇为什么我正在尝试的那一个不起作用。谢谢你的回复*现在我知道了为什么这对大多数人来说都不是问题。我收回这一点,它不起作用。例子。不过,它确实有效。我想我刚刚解决了这个问题。此htaccess代码在指向子目录的URL的加载项域上不起作用。对于任何有相同问题的人来说,这都是一个HostGator问题。他们必须自己解决这个问题。这也适用于相同的链接,而不会“美化”URL,例如->好答案-这通常不需要任何编辑。。。只需将其放到.htaccess文件中,您就知道了。这是当前从主机地址删除www的最佳解决方案,因为您不需要硬编码域名,因此您可以轻松地将更改推送到远程服务器,而无需修改.htaccess。谢谢您的回答。如果用户输入
https://www.domain.com/log-me-in
?他将被重定向到
http
。所以我需要另一次从
http
重写到
https
对吗?@TheFrost是的,你需要,
RewriteCond%{https}off
RewriteRule^(.*)$https://%{http\u HOST}%{REQUEST\u URI}[L,R=301]
+1获取版本选项。。问题:不应该使用NE标志吗。。如果你认为这只会在手动键入url时“命中”,那么没有它也没关系,但是对于任何过时的“www”“野外链接”呢。我刚刚在一个古老的电子邮件模板中发现了一个这样的链接:P@DM8否,
NE
标志(noescape)在这种情况下不应使用。URL
example.com/?a=1&b=2
已正确重定向到www.example.com/?a=1&b=2。当您在.htaccess中的URL中有特殊字符可重定向到例如
RewriteRule“^/anchor/(.+)”“/bigpage.html#$1”[NE,R]
(由于NE标志,重定向时不会转义)时,应该使用该标志。非常好的资源,@mikep。注意,在我的例子中,我必须使用%{ENV:HTTPS}而不是%{HTTPS}。@typeoneerror是的,这取决于具体情况,但仅apache配置中的标准变量是%{HTTPS},但当您在HTTPS=on上使用自定义变量,如
setenif X-HTTPS(X-HTTPS来自apache之前的代理,如nginx),则必须使用提到的%{ENV:HTTPS}
RewriteEngine On
RewriteCond %{HTTP_HOST}  !^www\.YOUR-SITE\.com$ [NC]
RewriteRule ^(.*) http://www.YOUR-SITE.com/$1 [L,R]