我有一个子域名设置为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。
是的,我确实需要重写一个名称不同于子域名的目录。
答案 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]