我无法为.htaccess文件创建脚本。
我想要以下重写:
www.domain.tld -> domain.tld
(没问题)admin.domain.tld/(.*) -> domain.tld/?show=admin$1
(everyothersubdomain).domain.tld -> domain.tld/?show=everyothersubdomain
(我为此创建了一个通配符子域)有人擅长这个吗?我在使用Error 500进行多次尝试后失败了,或者只是没有任何get参数的indexpage(index.php只是print_r($ _ GET))。
由于
答案 0 :(得分:1)
我自己没有测试过,但它应该可行。
RewriteCond %{QUERY_STRING} show=(.*)
RewriteRule ^(index\.php|)$ http://%1.domain.tld [R=301,L]
RewriteRule ^(admin|special1|special2)\.php http://$1.domain.tld [R=301,L]
RewriteCond %{HTTP_HOST} ^(admin|special1|special2)\.domain\.tld$ [NC]
RewriteRule (.*) http://domain.tld/%1.php [L,NC,QSA]
RewriteCond %{HTTP_HOST} www\.domain\.tld [NC]
RewriteRule (.*) http://domain.tld/$1 [L,R=301,QSA]
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.tld$
RewriteRule (.*) http://domain.tld/?show=%1[L,NC,QSA]
如果用户在浏览器中输入http://domain.tld/admin.php
,则会将其重定向到http://admin.domain.tld
。但如果他进入http://admin.domain.tld
,他就不会被重定向到外部。如果这是你想要的,请告诉我。
答案 1 :(得分:0)
感谢@Death我为自己想出了这个解决方案:
RewriteCond %{HTTP_HOST} ^(admin|special1|special2)\.domain\.tld$ [NC]
RewriteRule (.*) index.php?mode=%1 [L,NC,QSA]
RewriteCond %{HTTP_HOST} www\.domain\.tld [NC]
RewriteRule (.*) http://domain.tld/$1 [L,R=301,QSA]
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.tld$
RewriteRule (.*) index.php?show=%1 [L,NC,QSA]
我使用index.php进行了一些测试运行,这只是:
<?php print_r($_GET); ?>
每次测试运行都很完美!