我正在尝试为我的.htaccess创建一个正则表达式,匹配只有一个子域的域名
实施例
到目前为止我所拥有的是这件丑陋的事情:
^([a-z0-9_\-]+)\.([a-z0-9_\-]+)\.ourdomain\.de$
它与test1.subdomain.ourdomain.de匹配,但没有test1。如何正确否定这一点?我对负面前瞻的尝试不起作用:-(
答案 0 :(得分:1)
你可以尝试这个:
^[^\.]+\.[^\.]+\.[^\.]+$
此处^[^\.]+
会将该模式与该行开头的.
匹配,然后我们匹配文字.
,然后匹配到.
,然后再次.
,然后在最后我们匹配在行尾没有.
的任何模式。
答案 1 :(得分:1)
此示例htaccess将从subdomain.ourdomain.de
重定向到default.subdomain.ourdomain.de
,并且http://first1.subdomain.ourdomain.de
上不会匹配:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdomain.ourdomain.de$ [NC]
RewriteRule ^(.*)$ http://default.subdomain.ourdomain.de/ [R=301,NC,L]
要匹配任何1-subdomain网址,您需要使用具有相应RewriteCond
的正确捕获组:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^.]+\.[^.]+\.[^.]+)$ [NC]
RewriteRule ^(.*)$ http://default.%1/ [R=301,NC,L]
输入:
http://tes1.clothes.germany.de
输出:<NOTHING>
未满足RewriteCond %{HTTP_HOST} ^([^.]+\.[^.]+\.[^.]+)$ [NC]
条件
输入2 :
http://clothes.germany.de
输出网址:
http://default.clothes.germany.de/