配置mod_rewrite以添加“;www”;并支持MVC


Configure mod_rewrite to add "www" and to support MVC

如果用户忘记键入并通过使用[QSA] 重定向到index.php来支持MVC,我想将www添加到URL中

这是我目前的工作.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的情况下键入网站URL,所以我尝试编辑我的.htaccess

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]

它们都不起作用,请指导该怎么做

谢谢。

.htaccess文件上方添加这两行

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]