配置mod_rewrite以添加" www"并支持MVC

时间:2015-12-28 10:35:09

标签: php apache .htaccess mod-rewrite redirect

如果用户忘记输入并仍然支持MVC,我希望将 www 添加到网址中,方法是通过index.php重定向到[QSA]

这是我目前工作的 .htaccess

RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L,QSA]
  

使用此 .htaccess 一切正常,我可以输入www.abc.com/xxx/yyy来访问任何特定页面

无论如何,因为我使用Facebook身份验证,因此我必须阻止用户在没有 www 的情况下输入网站网址,因此我尝试编辑 .htaccess < / em>的

RewriteCond %{HTTP_HOST} ^abc\.com$
RewriteRule ^(.*)$ http://wwww.abc.com/$1 [R=301,QSA]

RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L,QSA]
  

使用此配置,如果我输入abc.com,我被重定向到www.abc.com,但如果我输入abc.com/xxx/yyy,我只被重定向为www.abc.com,而不是重定向到特定页。

我也试过

# 1
RewriteCond %{HTTP_HOST} ^abc\.com$
RewriteRule ^(.*)$ http://wwww.abc.com/$1 [QSA]

# 2
RewriteCond %{HTTP_HOST} ^abc\.com$
RewriteRule ^(.*)$ http://wwww.abc.com/index.php [QSA]

# 3
RewriteCond %{HTTP_HOST} ^abc\.com$
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://wwww.abc.com/$1 [L,QSA]

他们都没有工作,请指导做什么

感谢。

1 个答案:

答案 0 :(得分:0)

.htaccess文件

上方添加2行
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

所以你的最终htaccess看起来像这样

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

RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L,QSA]