.htaccess重写和子域名

时间:2009-12-22 16:54:10

标签: apache .htaccess mod-rewrite

我有一个子域名设置为onlinedev.domain.com 我需要使用htaccess重写到domain.com/online_content,同时仍在地址栏中显示onlinedev.domain.com(SSL适用于onlinedev.domain.com)。 这是我目前非常接近的:

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更改为:

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

我收到错误

我知道通常有更好的方法来执行此子域工作,但是如果没有进入服务器配置和DNS详细信息,我需要使用htaccess。

是的,我确实需要重写一个名称不同于子域名的目录。

2 个答案:

答案 0 :(得分:0)

好吧,我明白了。 问题是我造成了无限循环。 一旦重写发生,它仍然试图重写到目录。 这是我的新htaccess照顾它:

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

请注意,我添加了一项检查,以确保REQUEST_URI不是我要重写的目录的名称。

答案 1 :(得分:0)

尝试此规则:

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