1

我正在尝试进行 apache 重写,如果 request_uri 中包含术语“admin”

mydomain.com/admin/anything_else

重写主机以使用子域

admin.mydomain.com/admin/anything_else。

同样,如果我在 admin.mydomain.com 中单击一个链接并且它是一个没有“admin”的 url,那么我想将 url 重写回

mydomain.com/anything_else

我的问题是。正则表达式可以做这样的存在检查吗?我知道它可以做不匹配的术语(虽然我不知道语法......),但在这种情况下,我希望正则表达式完全失败。有任何想法吗?

ReWriteCond [^(admin)]$

mydomain.com/admin/hi - 匹配 mydomain.com/anything - 不匹配

4

3 回答 3

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]
于 2009-11-14T08:01:17.733 回答
0

您可以尝试使用负前瞻,例如 mydomain.com/(?!admin)

于 2009-11-14T02:56:30.800 回答
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]
于 2009-11-18T18:26:19.657 回答