我正在尝试重写apache,如果request_uri中包含术语“admin”
mydomain.com/admin/anything_else
重新编写主机以使用子域
admin.mydomain.com/admin/anything_else。
同样,如果我在admin.mydomain.com中点击一个链接并且它是一个没有“admin”的网址,那么我想将网址重写回
mydomain.com/anything_else
我的问题是。可以正则表达式做那样的存在检查吗?我知道它可以做不匹配的术语(我不知道语法虽然......),但在这种情况下我希望正则表达式完全失败。有什么想法吗?
ReWriteCond [^(admin)] $
mydomain.com/admin/hi - 匹配 mydomain.com/anything - 不匹配
答案 0 :(得分:1)
请尝试以下规则:
RewriteCond %{HTTP_HOST} !=admin.example.com
RewriteRule ^admin(/|$) http://admin.example.com%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} =admin.example.com
RewriteRule !^admin(/|$) http://example.com%{REQUEST_URI} [L,R=301]
答案 1 :(得分:0)
您可以尝试使用负面预测,例如mydomain.com /(?!admin)
答案 2 :(得分:0)
我最后做了类似的事......
# Redirect to subdomain admin for an admin specific uri request
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{REQUEST_URI} admin
RewriteRule ^(.*)$ http://admin.example.com$1 [L]
# Redirect to subdomain admin for an admin specific uri request
RewriteCond %{HTTP_HOST} ^admin.example.com$
RewriteCond %{REQUEST_URI} !admin
RewriteRule ^(.*)$ http://www.example.com$1 [L]