apache - mod_rewrite - 添加 www

标签 apache .htaccess mod-rewrite

我正在尝试强制 www对于我的网站地址 .htaccess :

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子域。

最佳答案

问题就在这里:

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

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

重申亚历克斯所说的话:
 <IfModule mod_rewrite.c>
   RewriteCond %{HTTPS} !=on
   RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
   RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
 </IfModule>

关于apache - mod_rewrite - 添加 www,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7493241/

相关文章:

apache - 证书不包含与服务器名称匹配的 ID

.htaccess - 当我尝试删除 www 前缀时出现 Yii 错误

apache - 使用 htaccess 阻止 URL

regex - .htaccess 多重重写条件和规则

apache - 一个 URL 如何被 htaccess 中的多个重写规则修改?

PHP脚本无故突然停止工作

apache - 当 default virtualhost 不可用时,没有可用的虚拟主机

apache - 如何为网上商店的结帐链接强制使用 SSL

apache - 如何使我的 .htaccess 强制使用 https,但仅适用于一个目录(同时保留 ExpressionEngine 和基于无 www 的规则)

linux - 如果找不到文件或文件夹,.htaccess 重定向到新域