1

我未能为我的 .htaccess 文件创建脚本。

我想要以下重写:

  • www.domain.tld -> domain.tld(没问题)
  • admin.domain.tld/(.*) -> domain.tld/?show=admin$1
  • (everyothersubdomain).domain.tld -> domain.tld/?show=everyothersubdomain (我为此创建了一个通配符子域)

有人擅长这个吗?在多次尝试错误 500 或只是没有任何获取参数的索引页(index.php 只是 print_r($_GET))后,我失败了。

谢谢

4

2 回答 2

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,他将不会被外部重定向。让我知道这是否是你想要的。

于 2012-03-05T04:26:54.840 回答
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); ?>

每次测试运行都很完美!

于 2012-03-06T04:40:40.860 回答