3

我有一个门户网站http://www.mysite.com/,客户可以在其中注册,然后他们会获得自己的网站子域版本来运行我的应用程序。我已经设置了通配符子域 DNS/VirtualHost 等并让它工作。

我要设置的是我的 htaccess 文件,以将通配符子域作为参数传递给应用程序,如下所示:

http://wildcardsubdomain.mysite.com/ -> http://www.mysite.com/app/?dj=wildcardsubdomain
http://wildcardsubdomain.mysite.com/?l=genres -> http://www.mysite.com/app/?dj=wildcardsubdomain&l=genres

我通过在http://www.mysite.com/的 .htaccess 文件中添加这个来实现这一点

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.mysite.com
RewriteCond %{HTTP_HOST} ^(.+).mysite.com
RewriteRule ^([^/]*)$ http://www.mysite.com/app/dj/%1 [P,L]

但是我需要按如下方式重定向管理员用户 URL,并且我已经被 htaccess 代码卡住了,以便在 /app 目录中使用。我需要的是:

http://wildcardsubdomain.mysite.com/admin/?l=genres -> http://www.mysite.com/app/admin.php?dj=wildcardsubdomain&l=genres
http://wildcardsubdomain.mysite.com/admin/?l=users -> http://www.mysite.com/app/admin.php?dj=wildcardsubdomain&l=users

(l参数不同,我这里只是以用户和流派为例)

我已经在 /app/.htaccess 中尝试过,但它并没有真正奏效:

RewriteRule ^dj/([^/]+)/?$ $2?dj=$1 [QSA,L]
RewriteRule ^admin/([^/]+)/?$ admin.php$2?dj=$1 [QSA,L]

任何人都可以提出更好的重写规则吗?提前谢谢了

4

1 回答 1

0

你错过了一个QSA标志,l=genres否则会丢失。您只需要在其他规则之前使用“管理员”规则:

RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\.mysite.com
RewriteCond %{HTTP_HOST} ^(.+).mysite.com
RewriteRule ^admin/?$ http://www.mysite.com/app/admin.php?dj=%1 [P,L,QSA]

RewriteCond %{HTTP_HOST} !^www\.mysite.com
RewriteCond %{HTTP_HOST} ^(.+).mysite.com
RewriteRule ^([^/]*)$ http://www.mysite.com/app/dj=%1 [P,L,QSA]
于 2013-09-10T04:53:10.820 回答