Получить последний элемент после последней косой черты с помощью .htaccess - PullRequest
1 голос
/ 22 марта 2011

Предполагая строку типа http://domain.com/aaaa/bbb/ccc/ddd

Я хочу использовать файл .htaccess для получения последнего элемента, в данном случае ddd.

Я использую:

RewriteRule (. *) / $? Pt = $ 1 [L]

Но это работает только с косой чертой.

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

Это потому, что ваше регулярное выражение содержит косую черту.

Попробуйте:

RewriteRule ([^/]+)/?$ ?pt=$1 [L]

Знак вопроса после косой черты означает «ноль или единицу».Если вам не нужно это поведение, измените регулярное выражение соответствующим образом.

Редактировать:

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

RewriteCond %{QUERY_STRING} !pt
RewriteRule ([^/]+)/?$ ?pt=$1 [L]

Смысл RewriteCond состоит в том, чтобы предотвратить применение RewriteRule, когда уже есть строка запроса с ptв этом где-то, что было бы подсказкой, что переписывание уже произошло.Для более сложных правил может потребоваться больше или другие директивы RewriteCond.

0 голосов
/ 19 февраля 2017

Работает:

RewriteEngine On
RewriteRule ^([A-Za-z0-9]+)$ /index.php?content=$1 [L]

Это изменит следующий URL:

http://example.com/anypage

в

http://example.com/index.php?content=anypage

Но он переопределит все и проигнорирует параметры. Поэтому лучше добавить дополнительные ограничения.

...