htaccess从子域获取值并重定向到新URL

时间:2016-01-28 00:37:19

标签: apache .htaccess

我有一个像这样的网址设置

sub.domain.com/leaderboards/showlist/APPNAME/SCORE/DEVICEID

我试图在网站的根目录中使用htaccess而不是子域名来向该网址发送

domain2.com/get/APPNAME/leaderboards/SCORE/DEVICEID

当我在子域htaccess中使用此代码时,我能够使其工作

RewriteRule ^showList/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$ http://domain2.com/get/$1/leaderboard/$2/$3/ [NC,L]

然而,这并没有在root htaccess中工作,所以我尝试了一些我在网上发现的一切,我无法弄清楚如何获得上面的参数。这就是它目前的样子,它根本不做任何事情

RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ [NC]
RewriteRule ^showList/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$ http://domain2.com/get/$1/leaderboard/$2/$3 [NC,L]

根据我的理解,RewriteCond应该只包含子域中的人,并且规则应该与子域htaccess中的相同吗?

1 个答案:

答案 0 :(得分:0)

我认为您遇到的问题是现在您将.htaccess文件放在不同的目录中。

指令RewriteRule相对于当前目录匹配,所以假设子域位于名为sub的文件夹中,该文件夹位于父目录下(现在包含.htaccess),您需要使用RewriteRule ^sub/showList进行匹配我相信。

另一种方法是保持简单,就是RewriteCond%{REQUEST_URI}进行匹配,然后使用%backreferences来引用这些匹配。请参阅以下示例:

RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/showList/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$ 
RewriteRule .* http://domain2.com/get/%1/leaderboard/%2/%3 [NC,L]