Как изменить change / to - в yii2 url для конкретного действия
Я переписываю WordPress сайт на yii2. и я должен сохранить предыдущие посты URL по некоторым причинам! Это нечто подобное
https://example.com/blog-thenameofpost
Итак, я создал контроллер блога, и у меня есть эта ссылка таким образом
https://example.com/blog/view?id=thenameofpost
Я не знаю, как я могу написать правило urlManager для этого. Я просто добавляю эти правила
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
а теперь эта ссылка https://example.com/blog/view?id=thenameofpost
открывается с чем-то вроде этого:https://example.com/blog/thenameofpost
Есть ли правила, чтобы открыть ссылку с чем-то вроде этого https://example.com/blog/thenameofpost
?
1 ответ
Если вы хотите создать правило для https://example.com/blog-thenameofpost
Вы можете добавить следующее правило.
'blog-<id>' => 'blog/view',
Левая часть - это то, что вы на самом деле увидите в адресной строке. Ты можешь использовать < >
указать параметр. Так что это правило будет соответствовать всему, что начинается с blog-
а затем рассмотреть часть после этого как id
пары. Правая часть - то, куда этот запрос должен быть направлен. Таким образом, этот запрос будет в конечном итоге в BlogController
и позвонить actionView($id)
, где $id
будет установлен на <id>
часть; thenameofpost в случае примера URL.
Правило для https://example.com/blog/thenameofpost
было бы
'blog/<id>' => 'blog/view'
Дополнительная информация: В части параметров (слева) вы можете добавить дополнительную информацию для соответствия параметру. Так <id:\d+>
будет соответствовать только цифры, из-за де \d+
часть. Для получения дополнительной информации прочитайте документы: http://www.yiiframework.com/doc-2.0/yii-web-urlmanager.html$rules-detail