我有一个.htaccessredirect为“非www”像这样:
RewriteEngine on RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
这是工作。 但是,我也有一些除了www以外的子域名。 如果我打电话给例如http://shop.example.com,它会将我redirect到: http : //www.shop.example.com
我不想将子域写入.htaccess文件,它应该自动工作,只是忽略任何比www和''像这样:
if subdomain =='' -> redirect to www.HTTP_HOST.... elseif subdomain !='' && subdomain !='www' -> do nothing.
谢谢!
尝试这个:
Options +FollowSymlinks RewriteEngine On RewriteCond %{HTTP_HOST}//s%{HTTPS} ^www\.(.*)//((s)on|s.*)$ [NC] RewriteRule ^ http%3://%1%{REQUEST_URI} [L,R=301]
只是尝试与internetagentur.drupal-webmaster.de (子域) – 主要是没有www。
试试这个规则:
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
并考虑到HTTPS:
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ RewriteCond %{HTTPS}s ^on(s)| RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
如果你想要一个php解决方案,你可以使用类似这样的东西:
define('URL', 'yourdomain.com/'); // fix : impose www rule if (strpos($_SERVER['SERVER_NAME'], 'www') === false ) { header('Location: http://www.'.URL.$_SERVER['REQUEST_URI']); die(); }
这也将重定向到最初请求的页面。