2013-06-25 34 views
1

我有一個網站說www.abcd.com。它的工作正常,如果我使用url訪問它http://abcd.com。但我想要的是,如果用戶使用url http://abcd.com,那麼web服務器應該能夠將其轉換爲url www.abcd.com如何在我的wesite前添加www

%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] 

有了這些變化,我越來越第5行錯誤(從上面,我認爲)執行「服務的httpd重新啓動「:

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服務沒有太多的知識。但等待一個更簡單的解決方案。

希望你們遇到了這個問題&一定能解決。

+0

我也試過了,最近但沒有得到它的工作。等待答案。 – MicroEyes

回答

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. 的第一個片段(下面的「重定向非canoncial域」)重定向誰從別名進來遊客(例如my-domain-alias.com)到主域(yourdomain.com)。它使用301重定向(永久)讓搜索引擎知道這是正確的地址(而不是一些重複的內容)。
  2. 它檢查是否使用www前綴。如果不是,則重定向,並使用301狀態碼重定向。

注意:NC標誌告訴Apache檢查忽略大小寫。

- 編輯:

我的命令指令更改爲:

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

這將拒絕訪問所有隱藏文件(例如,你的PHP .user.ini文件,如果存在的話)。 ,不僅.htaccess/.htpasswd文件等

+0

關於** httpd.config **文件的任何想法?是對的。?那麼錯誤呢? – SatbirSingh

+0

嗯,我認爲你已經從某種例子中抓取了規則'「?因爲我從來沒有見過在那裏使用參數。猜猜這個例子的作者只是想讓你在那裏填寫一個特定的目錄名稱。這實際上是導致錯誤消息。點2: – giorgio

+0

:我不會更改那裏的AllowOverride設置,我只會在特定的http目錄中執行此操作。在3.我會填寫你的文檔根目錄。點4是好的,刪除5(參見我對該參數的評論)。 6.是完美的。結合我的htaccess示例,它應該可以工作 – giorgio