如何使用htaccess将非wwwredirect到www URL?

我在我的网站的根目录中有一个网站http://www.example.com/ ,我添加了.htaccess文件来将http://example.com/的任何请求redirect到http://www.example。 COM /

最近我创build了一个新的部分“video”,所以video的URL是http://www.example.com/videos/ 。 在这个video文件夹中,我有另一个正在执行重写video条目的htaccess文件。 当我尝试访问http://example.com/videos/时,它不会将我redirect到http://www.example.com/videos/

我认为.htacces不是从父目录inheritance以前的规则。 任何人都可以告诉我什么可以是我可以在/ videos /文件夹的.htaccess文件中添加的规则,以便http://example.com/videos/的任何请求将被redirect到http://www.example。 com / videos / URL。

这是一个更通用的解决scheme,因为它可以与任何域名一起使用,而无需在每个.htaccess中指定特定域名:

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

相反也是可以的(www到非www):

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

我想这可能只是因为你现有的规则太严格了,并没有在你的子目录中被触发。 像这样的东西应该在整个网站上工作:

 RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} ^example\.com$ RewriteRule ^(.*) http://www.example.com/$1 [R=301] 

这是使用htaccess将非wwwredirect到www URL的最佳解决scheme。 在htaccess文件中使用此代码并检查url。

 Options +FollowSymlinks RewriteEngine on rewritecond %{http_host} ^mydomain.com [nc] rewriterule ^(.*)$ http://www.mydomain.com/$1 [r=301,nc] 

我build议大家坚持下面的方法,它只会redirect主域而不是主机中的任何其他子目录或子域。

 # Redirect non-www to www only for main domain # recommended if you have any/some sub-domain(s) RewriteEngine on RewriteBase / # Replace yoursite and .tld respectively RewriteCond %{HTTP_HOST} ^yoursite\.tld$ # Replace yoursite.com RewriteRule ^(.*) http://www.yoursite.com/$1 [R=301] 

如果你真的确定,使用这种方法,我希望你会永远不会使用子域名与您的网站,即subdomain.yoursite.com或任何其他。 比你不妨使用下面的方法。 “再说一次,确定你是否真的想用这种方法”

 # Redirect all non-www to www including subdomain(s) RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

下面的方法将redirect所有的WWW URL到非WWW包括你的子域,尽pipe你不能使用www.subdirecty.yoursite.com它会提示你错误500。

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