.htaccess从URL删除WWW+;名录
这似乎对许多人来说都不是问题(阅读:我找不到答案),但我想更新以下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
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)在这种情况下不应使用。URLexample.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]