Php 在tld中使用连字符的htaccess重写规则

Php 在tld中使用连字符的htaccess重写规则,php,apache,.htaccess,tld,hyphen,Php,Apache,.htaccess,Tld,Hyphen,我正在尝试编写htaccess文件,以转换 到 请注意tld中的连字符 这是我正在使用的htaccess Options +FollowSymLinks Options -Indexes RewriteEngine On # Rewrite sub domains. RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{HTTP_HOST} !^www\.my-tld\.com$ [NC] RewriteCond %{HTTP_HO

我正在尝试编写htaccess文件,以转换

请注意tld中的连字符

这是我正在使用的htaccess

Options +FollowSymLinks 
Options -Indexes

RewriteEngine On 

# Rewrite sub domains. 
RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{HTTP_HOST} !^www\.my-tld\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.my-tld\.com$ [NC]
RewriteRule ^(.*)$ /file.php?var=%2 [QSA,L]
事实上,我在同一台服务器的另一个域中使用了相同的代码,它工作得很好,但它不适用于这个域,我猜问题在于这个域中的连字符


有什么建议吗?

对我来说,这些规则会使服务器返回内部服务器错误,并且会打印错误日志

由于可能的原因,请求超出了10个内部重定向的限制 配置错误

我不知道为什么它会像您所说的那样适用于另一个域,但请尝试在最终重写规则之前添加此条件:

RewriteCond %{QUERY_STRING} !var=

让它通过url alreay get param var.

你是否尝试过像my \-tld中那样避开连字符?@neokio是的,但没有运气-不要紧,它们在[and]中只有特殊意义方括号。@JonLin那么,您将如何编写代码来实现此目的呢?如果我访问blahblah.my-tld.com,这些规则在我的空白htaccess文件中运行良好