如何在我的网站前添加www

时间:2013-06-25 12:09:17

标签: apache .htaccess

我有一个网站说 www.abcd.com 。如果我使用网址 http://abcd.com 访问它,它的工作正常。但我想要的是,如果用户使用网址 http://abcd.com ,那么网络服务器应该能够将其转换为网址 www.abcd.com

%LOCATION_CONTAINS_HTACCESS_FILE%=某些路径

httpd.config中的一些重要更改是:

1. DocumentRoot "/var/www/html"


2. <Directory />
    Options FollowSymLinks
    AllowOverride All       #changed to All
</Directory>


3. <Directory "%LOCATION_CONTAINS_HTACCESS_FILE%">
    AllowOverride All
</Directory>


4. AccessFileName .htaccess                             #default
5. %LOCATION_CONTAINS_HTACCESS_FILE%/.htaccess           # I added 
6. <Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

我的 .htaccess

RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

在执行“ service httpd restart ”时,我在第5行(从上面看,我认为)收到错误:

Starting httpd: Syntax error on line 415 of /etc/httpd/conf/httpd.conf:
Invalid command '%LOCATION_CONTAINS_HTACCESS_FILE%/.htaccess', perhaps misspelled or defined by a module not included in the server configuration

我浏览了网络上的大多数链接,但无法获得任何特定的解决方案。

我对Web服务知之甚少。但等待更简单的解决方案。

希望你们面对这个问题&amp;一定解决了

1 个答案:

答案 0 :(得分:1)

我总是使用下面的代码段:

RewriteEngine On
RewriteBase /

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

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

它做了两件事:

  1. 第一个代码段(在“重定向非规范域名”下方)将从别名(例如my-domain-alias.com)进入的访问者重定向到主域(yourdomain.com)。它使用301重定向(永久)让搜索引擎知道这是正确的地址(而不是一些重复的内容)。
  2. 检查是否使用了www前缀。如果没有,它会重定向,并使用301状态代码重定向。
  3. 注意:NC标志告诉apache检查忽略大小写。

    - 编辑:

    我将订单指令更改为:

    # Protect hidden files from being viewed
    <Files .*>
            Order Deny,Allow
            Deny From All
    </Files>
    

    这将拒绝访问所有隐藏文件(例如,您的php .user.ini文件,如果存在),而不仅仅是.htaccess / .htpasswd文件等。