我有一个像这样的网址设置
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中的相同吗?
答案 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]