我想将我的主域重写为路径,如果没有追加查询则转到其他路径。我有一个通配符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
答案 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]