I have a .htaccess redirect for "non www" like this:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
it is working. But, i have also some subdomains other than www. If I call for example http://shop.example.com it redirects me to: http://www.shop.example.com
I dont want to write the subdomains into the .htaccess file, it should work automatically, just ignore anything else than www and '' like this:
if subdomain =='' -> redirect to www.HTTP_HOST....
elseif subdomain !='' && subdomain !='www' -> do nothing.
thanks!
Try this rule:
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
And to also take HTTPS into account:
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
try this:
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_HOST}//s%{HTTPS} ^www\.(.*)//((s)on|s.*)$ [NC]
RewriteRule ^ http%3://%1%{REQUEST_URI} [L,R=301]
Just tried it with internetagentur.drupal-webmaster.de (the subdomain) - the main is without www.
If you want a php solution you could use something similar to this:
define('URL', 'yourdomain.com/');
// fix : impose www rule
if (strpos($_SERVER['SERVER_NAME'], 'www') === false ) {
header('Location: http://www.'.URL.$_SERVER['REQUEST_URI']);
die();
}
This would also redirect to the originally requested page.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.