如何防止.htaccess规则重写中的重定向?

时间:2014-09-13 14:06:21

标签: .htaccess

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !www.getshoutbox.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(.*)\.getshoutbox\.com
RewriteRule ^(.*)$ http://www.getshoutbox.com/test.php?id=%1 [L,NC]

这些规则运行正常,但我重定向到:

http://www.getshoutbox.com/test.php?id=X

如何恢复并坚持下去:

http://X.getshoutbox.com

1 个答案:

答案 0 :(得分:1)

您的规则问题在于您使用WWW的完整域名而非内部重定向:

Options +FollowSymLinks -MultiViews

RewriteEngine on
RewriteBase /

# do nothing avoid loop
RewriteRule ^test.php$ - [L]

# if domain is not www.yourdomain.com or yourdomain.com
RewriteCond %{HTTP_HOST} !^(www\.)?getshoutbox\.com$ [NC]
# then get the subdomain with ([^\.]+)?\.yourdomain.com
RewriteCond %{HTTP_HOST} ^([^\.]+)?\.getshoutbox\.com$ [NC]
# use the result below
RewriteRule ^ test.php?id=%1 [NC,L]

由于我们已经知道我们不在www.yourdomain.comyourdomain.com,请抓住子域名并使用%1作为id向下传递,然后移除http://www.getshoutbox.com/因为在这种情况下不需要。