没有`www`,域名不起作用

Dig*_*ite 28 subdomain dns .htaccess web

当我输入我的域名时没有www(喜欢http://example.com),它不起作用并给出错误信息.但是,当我添加www它(如http://www.example.com)时,它的工作原理.

是不是应该双向工作(有和没有www)?

Dig*_*ite 21

您只需将以下代码添加到根.htaccess文件中:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

  • 如果你向人们解释这实际上是做什么的,那就太好了.这是一个使用相同代码的博客http://dense13.com/blog/2008/02/27/redirecting-non-www-to-www-with-htaccess/ (6认同)
  • 您需要了解正则表达式来破译代码.第二行表示:如果HTTP_HOST没有(!)以(^)"www."开头,则将其放入内存中以供下一行使用.下一行说:从上一行中捕获的内容,匹配从开头(^)到结束($)的所有内容(.*)并将所有内容(在括号内)保存为$ 1.然后用"http:// www"替换$ 1.加上HTTP_HOST变量. (2认同)

Nee*_*eku 5

使用当前版本的apache,您需要执行以下操作,与以前的版本相比,它已更改:

cd /etc/apache2/sites-enabled
Run Code Online (Sandbox Code Playgroud)

现在找到您的域的配置文件并进行编辑(之后的前三行<VirtualHost *:80>是我们需要的):

<VirtualHost *:80>
        ServerName www.yourdomain.com
        ServerAlias yourdomain.com *.yourdomain.com
        ServerAdmin webmaster@localhost

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

现在保存对文件的更改后,您应该重新加载Apache我们的服务器配置:

service apache2 reload
Run Code Online (Sandbox Code Playgroud)

它会工作!

PS您可能还希望不添加*.yourdomain.comServerAlias行尾.