Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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 mod_重写-添加www_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache mod_重写-添加www

Apache mod_重写-添加www,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我正试图使用.htaccess强制www查找我的网站地址: RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] RewriteRule ^(.*)$ http://www.mysite.coml/$1 [R=301,L] 如果我打开mysite.com这个工作正常-它会添加www。它变成http://www.mysite.com/index.php 但是如果我打开mysite.com/subpage我会重定向到http://www.mysite.com/in

我正试图使用
.htaccess
强制
www
查找我的网站地址:

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^(.*)$ http://www.mysite.coml/$1 [R=301,L]
如果我打开
mysite.com
这个工作正常-它会添加
www
。它变成
http://www.mysite.com/index.php

但是如果我打开
mysite.com/subpage
我会重定向到
http://www.mysite.com/index.php
再次,而不是
http://www.mysite.com/subpage

但是如果我打开
http://www.mysite.com/subpage
我没有得到重定向(这是预期的行为)

我怎样才能解决这个问题?我希望将所有到我的站点的请求重定向到
www
子域。

从超级:


重写cond%{HTTPS}=在…上
重写cond%{HTTP_HOST}^www\..+$[NC]
重写规则^http://www.%{HTTP_HOST}%{REQUEST_URI}[R=301,L]

问题就在这里:

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
^
指定字符串的开头,而
$
指定字符串的结尾

为了使其工作,您需要在.com或
+
之后选择一个通配符

要重申Alex所说的话:

 <IfModule mod_rewrite.c>
   RewriteCond %{HTTPS} !=on
   RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
   RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
 </IfModule>

重写cond%{HTTPS}=在…上
重写cond%{HTTP_HOST}^www\..+$[NC]
重写规则^http://www.%{HTTP_HOST}%{REQUEST_URI}[R=301,L]

事实上,我不同意萨托先生的观点

看来问题不在于:

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
通过一些额外的研究(通过谷歌),我发现这对我来说非常有效:

<IfModule mod_rewrite.c>
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
  RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

重写cond%{HTTPS}=在…上
RewriteCond%{HTTP_HOST}^mysite\.com$[NC]
重写规则^http://www.%{HTTP_HOST}%{REQUEST_URI}[R=301,L]
Szanto先生的回答虽然格式良好,但似乎将所有缺少“www”的请求重定向到附加了“www”的重定向。对于大多数子域来说,这不是一个理想的结果。上述代码仅在TL域名前没有“www”和子域时重定向


希望这对其他人有帮助。

我最喜欢上面的答案——任何使用子域的人都必须更加具体,不要不必要地(错误地)附加www。
<IfModule mod_rewrite.c>
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
  RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>