2012-03-01 69 views
0

我的.htaccess文件是,由于某种原因,导致500内部服务器错误,当我试图重定向这样的子域:子域名重定向与htaccess以及一个500内部服务器错误

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^subdomain\.domain\.com [NC] 
RewriteRule ^(.*)$ folder/anotherfolder/$1 [L] 

我目前的主机不会自己重定向子域名,所以我必须这样做。我试图实现的是,当用户输入http://subdomain.domain.com/时,他确实看到http://domain.com/folder/anotherfolder。但是,我不想让地址栏上的域自己改变。子域本身显然是主域的别名,因此指向与主域相同的文件夹。

上面的代码也工作时,正则表达式导致它用作GET,因为这样的:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^subdomain\.domain\.com [NC] 
RewriteRule ^(.*)$ folder/anotherfolder/index.php?p=$1 [L] 

的GET“P”的值,然而,这不是例如“test.php”(如果你试图访问subdomain.domain.com/test.php),但是从主域(即folder/anotherfolder/test.php)的整个路径。

任何想法我做错了什么?

回答

2

啊,似乎是由内部重定向循环造成的。通过这样做,固定:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^subdomain.domain.com [NC] 
RewriteRule ^folder/anotherfolder/ - [L] 
RewriteRule (.*) folder/anotherfolder/$1 [L] 

有趣的是,答案通常在你问别人之后就会显示出来。

1

你的代码改成这样:

RewriteEngine On 

RewriteCond %{QUERY_STRING} !^p= [NC] 
RewriteCond %{HTTP_HOST} ^subdomain\.domain\.com$ [NC] 
RewriteRule ^(.*)$ folder/anotherfolder/index.php?p=$1 [L]