2017-01-31 2 views
0

Я пытаюсь добавить трейлинг-косу к URL-адресу. У меня есть своя собственная логика, но я нашел еще один в stackoverflow (here). Теперь регулярное выражение в этой строкеКак это регулярное выражение совпадает с htaccess

RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] 

по-видимому, совпадает с RewriteRule для URL http://www.example.com/wp-admin.

То, что я первый сделал:

RewriteCond %{REQUEST_URI} /wp-admin$ [NC] 
RewriteCond %{REQUEST_URI} !/+$ 
RewriteRule^%{ENV:proto}://%{HTTP_HOST}%{REQUEST_URI}/ [R=301,L] 

Так что мой вопрос, как /wp-admin$ похож на ^([_0-9a-zA-Z-]+/)?wp-admin$?

+0

Ваш вопрос непонятен. Какова цель lookbehind здесь '(? <= /) Wp-admin $', а не только '/ wp-admin $'? – anubhava

+0

@anubhava Чтобы соответствовать предыдущему '/', я бы обеспечил «wp-admin» после «/». И RewriteRule отлично работает. Поскольку '^ ([_ 0-9a-zA-Z -] + /)? Wp-admin $' не должно найти соответствия в http://example.com/wp-admin (по крайней мере в pcre), как это работает в файле htaccess. – SaMax

ответ

0

Это потому, что ведущий слэш подобран при использовании RewriteCond %{REQUEST_URI} но текущий каталог (по отношению к DocumentRoot) удаляется при использовании шаблона в RewriteRule в файле .htaccess, который является директивой в каталог.

Следовательно, ведущая косая черта не сопоставляется в RewriteRule, но сопоставляется в RewriteCond.

+0

@OP: Я ответил на ваш запрос? – anubhava