htaccess将子域重写到文件夹

时间:2016-05-03 14:35:38

标签: apache .htaccess mod-rewrite

我想将我的主域重写为路径,如果没有追加查询则转到其他路径。我有一个通配符C名称来支持子域名。

www.xxx.com =>通常正常工作

abc.xxx.com =>指向文件夹

abc.xxx.com/abc-xyz =>指向www.xxx.com并且应该正常工作

这就是我现在所拥有的:

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On

    RewriteCond %{HTTP_HOST} !^([w]{3,3}[.]{1,1}){0,1}example.com$
    RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]*)[.]example.com$
    RewriteRule ^$ portfolio/index.php?pageDetailId=%1 [NC,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]

    RewriteCond %{HTTP_HOST} !^([w]{3,3}[.]{1,1}){0,1}example.com$
    RewriteCond %{HTTP_HOST} ^([0-9a-zA-Z-]*)[.]example.com$
    RewriteRule ^(.*)$ $1?pageDetailId=%1 [QSA,L]
</IfModule>

正如我们所看到的,我需要在abc.example.com/abc-xyz中将abc作为变量。请回答任何疑问,我尝试了很多方法,它不工作。同样的htaccess可以顺利地在1个域上运行,但是当我创建了一个新的域时,它就无法正常工作。感谢。

注意:它适用于httpd但不适用于apache2

1 个答案:

答案 0 :(得分:1)

有这样的话:

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^(?!www\.)([\w-]+)\.example\.com$ [NC]
RewriteRule ^(index\.php)?$ portfolio/index.php?pageDetailId=%1 [NC,L,QSA]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteCond %{HTTP_HOST} ^(?!www\.)([\w-]+)\.example\.com$ [NC]
RewriteRule ^(.+)$ index.php?pageDetailId=%1&/$1 [L,QSA]

RewriteRule ^(.*)$ index.php?/$1 [L,QSA]