2009-12-22 160 views
1

我有一個子域設置爲onlinedev.domain.com 我需要使用htaccess重寫到domain.com/online_content,同時仍在地址欄中顯示onlinedev.domain.com(SSL適用於onlinedev.domain.com)。 這是我現在有非常接近:.htaccess重寫和子域名

php_flag display_errors off 

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} onlinedev\.domain\.com$ [NC] 
RewriteCond %{HTTP_HOST}<->%{REQUEST_URI} ^(www\.)?([^.]+).*<->/([^/]+) [NC] 
RewriteCond %2<->%3 !^(.*)<->\1$ [NC] 
RewriteRule ^(.+) /%2/$1 [L] 

這正確地重寫爲domain.com/onlinedev,但如果我嘗試將重寫規則更改爲:

RewriteRule ^(.+) /online_content/$1 [L] 

我得到一個錯誤

據我所知,通常有更好的方法來做這個子域的工作,但沒有進入服務器配置和DNS細節,我需要用htaccess來做到這一點。

是的,我確實需要重寫一個與子域名不同的目錄。

+0

你面臨的錯誤?服務器是否啓動,但沒有正確定向,或者這是一個配置錯誤?歡呼聲, CaioToOn! –

+0

我收到以下錯誤: 內部服務器錯誤 服務器遇到內部錯誤或配置錯誤,無法完成您的請求。 謝謝, 喬希 –

+0

所以,請嘗試再次啓動服務器。然後看看apache/logs/error.log文件。查看文件的結尾併發布您遇到的錯誤。 –

回答

0

嗯,我想通了。 問題是我造成了無限循環。 一旦重寫發生,它仍然試圖重寫目錄。 這是我的新的htaccess是照顧它:我添加了一個檢查,以確保REQUEST_URI不是我改寫的目錄名

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} onlinedev\\.domain\\.com$ [NC] 
RewriteCond %{REQUEST_URI} !^/online_content/ 
RewriteRule ^(.+) /online_content/$1 [L] 

通知。

0

試試這個規則:

RewriteCond %{HTTP_HOST} =onlinedev.example.com [NC] 
RewriteCond $0 !^online_content/ 
RewriteRule .+ /online_content/$0 [L]