2013-09-27 79 views
0

讓人們訪問我的網站,無論他們是否輸入www。在前面或不是我在哪裏放置.htaccess文件來做到這一點,因爲我已經嘗試過,它不會工作。重定向非www。 URL與URL的URL

我現在知道我需要將.htaccess放在非www上。服務器,並且需要知道如何訪問它以將其放置在那裏。

+1

1.您可能需要正確設置DNS以告訴其他人將「www.xxx.yyy」映射到與xxx.yyy相同的地址。 2.你可能想正確設置配置文件的'VirtualHost'(接受'www.xxx.yyy'和'xxx.yyy'),但我不知道如何完全做到這一點。 – JiminP

回答

1

您需要將此文件放在該文件夾的根目錄中。確保該文件被稱爲.htaccess,並且在末尾沒有擴展名,即.htaccess.txt。

如果在您的網站保持例如目錄

/var/www/mysite 

那麼這是該文件需要放置的目錄。根據你的web服務器的設置,apache可能不允許使用htacess文件。爲了克服這個,請執行以下操作

cd /etc/apache2/sites-available 

,並打開「默認」在你的編輯器或選擇,如

sudo nano default 

默認設置了AllowOverride是沒有的,它應該是所有的,所以你的整體「默認」的文件應該是這樣的:

NameVirtualHost * 
ServerAdmin [email protected] 
DocumentRoot /var/www/ 
Options FollowSymLinks 
AllowOverride None 
Options Indexes FollowSymLinks MultiViews 
AllowOverride All 
Order allow,deny 
allow from all 

如果您沒有ssh訪問權限,您可能需要與您的網絡主機通話。

附加評論 如果htaccess文件被確認爲再工作,你需要將以下代碼添加到htaccess文件:

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

這將所有流量轉發到http://site.com

或爲各地

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example.com 
RewriteRule (.*) http://www.example.com/$1 [R=301,L] 

這兩種其他方式顯然需要你用你的站點地址替換example.com。這是實現這一點的一種方法,或者您可以在您的apache虛擬主機文件中爲該特定站點添加一個ServerAlias。

+0

.htaccess文件正在工作,因爲它適用於我的自定義錯誤頁面。 – Jolly

+0

查看其他評論 –

+0

對不起,但我不明白。 – Jolly

0

這與htaccess無關。您需要確保當有人輸入www.example.com時,它會與example.com完全相同。這是一個DNS問題。找到你的域名註冊商並設置。

然後在您的服務器上,在您的vhost配置中同時允許。您應該看到如下所示的內容:

ServerName example.com 
ServerAlias www.example.com 
+0

有很多在線信息,包括這個網站有代碼重定向非www。版本與www的版本。 – Jolly

+0

@ user2820258沒有爲你工作嗎? –

+0

不,但我想知道我是否必須訪問非www。服務器從它重定向。 – Jolly