#regex #.htaccess #url #mod-rewrite #slim
#регулярное выражение #.htaccess #url #мод-перезапись #тонкая
Вопрос:
У меня есть два вида маршрутов.
Это работает:
http://localhost/monitor/test1
Это не:
http://localhost/monitor/test2/test3
Вот мое текущее правило:
RewriteRule (^[^/]*$) public/$1 [L]
Я знаю, что это соответствует только последней косой черте. Как я могу изменить регулярное выражение, чтобы оно соответствовало обоим случаям?
Комментарии:
1. Не могли бы вы сообщить нам, с
http://localhost/monitor/test2/test3
какого URL-адреса вы хотите перенаправить?2. @RavinderSingh13 я хочу перенаправить на public / test2 / test3
Ответ №1:
1-е решение: не могли бы вы попробовать следующее.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/monitor[^/]*/(.*)$
RewriteRule ^.*$ /public/%1 [NC,L]
ИЛИ, если у вас может быть какая-либо другая строка, отличная monitor
от REQUEST_URI
начальной части, попробуйте выполнить следующее.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/[^/]*/(.*)$
RewriteRule ^.*$ /public/%1 [NC,L]
2-е решение: или мы можем перехватывать значения во время записи RewriteRule
и могли бы уменьшить 1 RewriteCond
, который используется в 1-м решении здесь.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^[^/]*/(.*)$ /public/$1 [NC,L]
ИЛИ с monitor
соответствующим ключевым словом:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^monitor[^/]*/(.*)$ /public/$1 [NC,L]
Комментарии:
1. Вы мне уже очень помогли, я действительно молодец. Тот, который сработал для меня, является первым, но для записи общедоступный каталог не должен начинаться с косой черты RewriteEngine на RewriteCond %{REQUEST_FILENAME} ! -f перезаписать второй %{REQUEST_FILENAME} ! -d перезаписать второй %{REQUEST_URI} ^/монитор[^/]*/(.*)$ RewriteRule ^.*$ public/%1 [NC,L]
2. @DiegoDieh, добро пожаловать 🙂 Но на самом деле эта косая черта вызовет URI ЗАПРОСА после доменного имени URL-адреса, следовательно, он там присутствовал, рад помочь приветствиям