如果指定的字符串存在,则正则表达式不匹配

发布于 2024-08-11 07:12:47 字数 459 浏览 4 评论 0原文

中包含术语“admin”,则

我正在尝试进行apache重写,如果request_uri 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 - 不匹配

i'm trying to do an apache rewrite where if the term "admin" is contained in the request_uri

mydomain.com/admin/anything_else

re-write the host to use a subdomain

admin.mydomain.com/admin/anything_else.

likewise, if i click a link while in the admin.mydomain.com and it is a url WITHOUT "admin" in it, then i would like to rewrite the url back to

mydomain.com/anything_else

My question is. can regex do an exist check like that? I'm aware that it can do terms not matching (I don't know the syntax though...), but in this case I want regex to fail completely. Any ideas?

ReWriteCond [^(admin)]$

mydomain.com/admin/hi - matches
mydomain.com/anything - doesn't match

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

星星的轨迹 2024-08-18 07:12:47

尝试这些规则:

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]

Try these rules:

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]
帥小哥 2024-08-18 07:12:47

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

You may try using negative lookaheads, like mydomain.com/(?!admin)

冰雪梦之恋 2024-08-18 07:12:47

我最终做了类似的事情......

# 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]

I ended up doing something similar...

# 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]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文