Мод перезаписать проблему с подстановочными знаками внутри первых слешей в URI - PullRequest
0 голосов
/ 22 ноября 2018

Я хотел бы переписать так:

  /v2/auth /v2/myphp.php
  /v1/auth /v1/myphp.php

Должно быть довольно просто, но я сталкиваюсь с проблемами.Вот пример, который должен в конечном итоге делать то, что я хочу, условие перезаписи работает, но перезапись завершается неудачей:

RewriteCond %{REQUEST_URI} ^/v\d+/auth$ [NC]
RewriteRule "^.*(v\d+).*$" "/$1/myphp.php" [L]

Переписывающая таблица ниже работает с http://mydomaindotcom/v2/auth:

  RewriteRule "^.*auth$" "/v2/myphp.php" [L]

Но это работает и с тем же URL:

  RewriteRule "^.*a.*$" "/v2/myphp.php" [L]

Но это не удается, и я думаю, это указывает на проблему с обнаружением того, что находится в первых слешах?:

  RewriteRule "^.*v.*$" "/v2/myphp.php" [L]

был бы признателен за любую помощьчтобы решить это!

1 Ответ

0 голосов
/ 22 ноября 2018

Ваш RewriteCond должен проверить, что это "/ vDIGITS / auth", где DIGITS - [0-9].Итак, ваша линия:

RewriteCond %{REQUEST_URI} ^/v\d+/auth$ [NC]

в порядке.\d+ соответствует хотя бы одной цифре.Никаких проблем.

Тогда ваш RewriteRule должен взять ЦИФРЫ и использовать его для построения вашей цели.Поэтому используйте то же регулярное выражение из вашего RewriteCond и добавьте круглые скобки следующим образом:

RewriteRule "^/(v\d+)/auth$" "/$1/myphp.php" [L]

Поскольку вы знаете, что RewriteCond совпал с этим регулярным выражением, использование его в RewriteRule является беспроигрышным вариантом.

FYIесли вы хотите, чтобы браузеры оставили вас в покое для будущих запросов, сделайте перезапись постоянной с флагом "R = 301" после флага "L".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...