使用htaccess和500内部服务器错误进行子域重定向

时间:2012-03-01 18:38:32

标签: regex apache .htaccess mod-rewrite subdomain

当我尝试重定向这样的子域时,我的.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),但是来自主域的整个路径(即文件夹/ anotherfolder / test.php)。

任何想法我做错了什么?

2 个答案:

答案 0 :(得分:2)

啊,似乎是由内部重定向循环引起的。修复此问题:

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

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

答案 1 :(得分:1)

将您的代码更改为:

RewriteEngine On

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