我試圖將舊域重定向到新的子域,同時嘗試在瀏覽器的地址欄中顯示舊域。如何將舊域名重定向到新域名,同時在瀏覽器的地址欄中保留舊域名?
我用htaccess來做到這一點,一切工作,除了保持舊的域在地址欄中可見。
另一件很重要的事情就是需要維護url和GET變量中的文件夾。
我想通過htaccess優雅地完成所有這些工作,因爲我不想使用i-frame來實現這一點。
這是我迄今爲止使用的代碼。它的工作原理除了在瀏覽器的地址欄中保留舊的域名。
我的問題是,如何在重定向後在瀏覽器的地址欄中顯示舊域名?我在某處讀到,這可以通過所謂的「代理內容」來完成,但我可能是錯的。我也不知道這是如何工作的。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteCond %{HTTP_HOST} ^domain.com [nc]
RewriteRule ^(.*)$ http://subdomain.domain.com/$1 [r=301,nc,L]
RewriteCond %{HTTP_HOST} ^www.domain.com [nc]
RewriteRule ^(.*)$ http://subdomain.domain.com/$1 [r=301,nc,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
更新:
好了,所以我得到了一步。當我將網站文件放入根目錄的子目錄中時,下面的代碼有效。
但是,它仍然存在問題。雖然它將example.com重定向到example.com/subdirectory,但並未將example.com/index.php重定向到example.com/subdirectory/index.php。
我仍然試圖找出如何做到這一點,以便它可以處理所有文件,包括index.php。
#Redirect a domain to a subdirectory, while displaying only the domain and not the subdirectory in the browser address bar.
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase/
RewriteCond %{HTTP_HOST} ^example.com [nc]
RewriteRule ^$ /subdirectory/ [nc,L,QSA]
RewriteCond %{HTTP_HOST} ^www.example.com [nc]
RewriteRule ^$ /subdirectory/ [nc,L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
還有一點需要注意。由於我的網站中的所有元素都使用相對路徑,因此我必須將HTML根目錄設置爲子目錄才能使其工作,因爲由於重寫過程中網站HTML的相對路徑正在查看文件的錯誤根目錄。即他們鏈接到實際的根目錄,而不是子目錄。我的HTML根/基極設置爲子目錄如下:
<head>
<base href="http://<?php echo $_SERVER['HTTP_HOST']; ?>/subdirectory/" />
</head>
更新:
好了,所以我得到了一步。當我將網站文件放入根目錄的子目錄中時,下面的代碼有效。
但是,它仍然存在問題。雖然它將example.com重定向到example.com/subdirectory,但並未將example.com/index.php重定向到example.com/subdirectory/index.php。
我仍然試圖找出如何做到這一點,以便它可以處理所有文件,包括index.php。
#Redirect a domain to a subdirectory, while displaying only the domain and not the subdirectory in the browser address bar.
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase/
RewriteCond %{HTTP_HOST} ^example.com [nc]
RewriteRule ^$ /subdirectory/ [nc,L,QSA]
RewriteCond %{HTTP_HOST} ^www.example.com [nc]
RewriteRule ^$ /subdirectory/ [nc,L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
還有一點需要注意。由於我的網站中的所有元素都使用相對路徑,因此我必須將HTML根目錄設置爲子目錄才能使其工作,因爲由於重寫過程中網站HTML的相對路徑正在查看文件的錯誤根目錄。即他們鏈接到實際的根目錄,而不是子目錄。我的HTML根/基設置爲子目錄如下:
<head>
<base href="http://<?php echo $_SERVER['HTTP_HOST']; ?>/subdirectory/" />
</head>
子域中的內容是否與舊域中的內容完全相同? – 2013-05-10 19:50:03
是同一臺服務器上的域和子域? – miah 2013-05-10 19:50:42
@misplacedme:不,子域中的內容不同。 – 2013-05-10 20:01:37