我有一个门户网站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
中的.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,如下所示,我已经遇到了在/ app目录中使用的htaccess代码。 我需要的是:
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]
有人可以建议更好的重写规则吗? 非常感谢提前
答案 0 :(得分: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]