2013-12-18 46 views
0

我希望我的域名不總是顯示www,即URL是有效的:http://miweb.net除了這個域指向一個子目錄而不是根目錄。從域名www到no-www到子文件夾

我如何在htacess中指出兩種情況?

+1

請詳細說明。你想指向哪個子目錄?所有請求都去那裏了嗎?用戶的地址欄是否會更改以反映它,還是被無聲地重寫? –

+0

你的問題不清楚,你想在這裏做什麼? – anubhava

回答

0

你可能想看看VirtualHost

假設您使用的是Apache,這將允許您將帶有www或其他子域的URL重定向到服務器上的不同文件夾。

+0

我有我的網站上的Justhost(託管),不支持虛擬主機,並在godaddy域。 我目前使用下面的htaccess: '上 的AddHandler RewriteEngine敘述應用程序/ X的httpd-php54 .PHP 的RewriteCond%{HTTP_HOST}^WWW \ .myweb \ $ .NET重寫規則 ^/$「HTTP \? \/\/myweb \ .net \ /「[R = 301,L]' 這是完美的。如果您同意www.myweb.net myweb.net重定向。 但我也想要一個更多的條件。 默認情況下,我的域指向服務器目錄/ www,我想指向/ www/myweb文件夾/ 我如何在htaccess中聲明這個保留前面的屬性? – ephramd

+0

從我所知道的情況來看,單獨使用'.htaccess'是不可能的,因爲這是關於URL的,而不是服務器路徑。你可以使用PHP來重定向用戶,例如'「http:// $ _ SERVER [HTTP_HOST] $ _SERVER [REQUEST_URI]」;'? – Farce

0

我想我找到了解決方案。顯然,它的工作原理:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(www.)?myweb.net$ 
RewriteCond %{REQUEST_URI} !^/myweb/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /myweb/$1 
RewriteCond %{HTTP_HOST} ^www\.myweb\.net$ 
RewriteRule ^/?$ "http\:\/\/myweb\.net\/" [R=301,L] 
RewriteRule ^(/)?$ myweb/index.html [L] 
  1. 如果從瀏覽器訪問http://www.myweb.net,我們會自動重定向到http://myweb.net(沒有WWW)。

  2. 如果不是「/ www/myweb /」,那麼該域名不再指向託管「/ www /」的根目錄。