регулярное выражение не совпадает, если указанная строка существует - PullRequest
1 голос
/ 14 ноября 2009

Я пытаюсь переписать Apache, если в request_uri

содержится термин "admin".

mydomain.com / администратор / anything_else

перезаписать хост, чтобы использовать поддомен

admin.mydomain.com / админ / anything_else.

аналогично, если я нажму на ссылку в admin.mydomain.com, и это URL-адрес БЕЗ "admin" в нем, то я бы хотел переписать URL-адрес обратно на

mydomain.com / anything_else

Мой вопрос может ли регулярное выражение выполнить такую ​​проверку? Я знаю, что он может делать термины, не соответствующие (хотя я не знаю синтаксис ...), но в этом случае я хочу, чтобы регулярное выражение полностью провалилось. Есть идеи?

ReWriteCond [^ (admin)] $

mydomain.com / admin / hi - совпадения mydomain.com/anything - не соответствует

Ответы [ 3 ]

1 голос
/ 14 ноября 2009

Попробуйте эти правила:

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]
0 голосов
/ 18 ноября 2009

Я закончил тем, что делал что-то подобное ...

# 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]
0 голосов
/ 14 ноября 2009

Вы можете попробовать использовать негативные взгляды, например, mydomain.com/(?!admin)

...