Я беспокоюсь о маршрутизации моего сайта. Все мои метаэлементы SEO реализованы через раздел Metadata моей CMS. Одна из наиболее важных записей, названная Page маршрутизацией, работает правильно. Я собираюсь создать метатеги для конкретной страницы. После того, как я поместил нужную ссылку в качестве ввода в запись «маршрутизация страницы» для реализации этих метатегов, она не работает. Например, рассмотрите следующую иерархию, чтобы показать точную проблему.
Главная страница -> Курс -> Курс 1 -> тема 1, тема 2,… ->
Когда я выбираю, скажем, тему 1 и хочу создать для нее Metas, реализуются последние теги для раздела «Курс»! Другими словами, внутренние ссылки раздела «Курс» моего сайта не поддерживают теги.
Я новичок в программировании и не могу найти, кто решит эту проблему.
некоторый раздел моего макета выглядит следующим образом:
<link rel="canonical" href="https://physexams.com/<?=Yii::$app- >controller->id."/". Yii::$app->controller->action->id?>" />
<link rel="publisher" href="<?=$metadata->publisher?>" />
<title><?= Html::encode($metadata->title) ?></title>
<meta charset="<?= Yii::$app->charset ?>">
<meta name="description" content="<?=$metadata->meta_description?>"/>
и часть контроллера и его действия:
class CoursesController extends Controller
{
/**
* @inheritdoc
*/
public function actions()
{
return [
'error' => [
'class' => 'yii\web\ErrorAction',
],
'captcha' => [
'class' => 'yii\captcha\CaptchaAction',
'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
],
];
}
/**
* Displays homepage.
*
* @return mixed
*/
public function actionIndex( $id = 0 )
{
$coursesP = [] ;
if ( $id != 0 )
{
$coursesP = Courses::find()->where(['id'=> $id , 'itsok' => "yes"])->with('lessons')->one();
if ( empty($coursesP) )
{
$this->redirect(Url::to(['courses']));
}else {
$courses = Lessons::find()->where(['course_id' => $coursesP->id, 'itsok' => "yes"])->all();
}
}
else {
$courses = Courses::find()->where(['itsok' => "yes"])->with('lessons')->all();
}
return $this->render('index' , [
'courses' => $courses ,
'id' => $id ,
'parent' => $coursesP
]);
}
public function actionInternal( $id = 0 )
{
if ( $id == NULL)
{
return $this->redirect(Url::to(['courses/index']));
}
$lesson = Lessons::find()->where(['itsok' => 'yes' , 'id' => $id])->with(['course' , 'lessonElements'])->one();
$otherLessons = Lessons::find()->where(['course_id' => $lesson->course_id , 'itsok' => 'yes'])->all();
if ( empty( $lesson->id) )
{
return $this->redirect(Url::to(['courses/index']));
}
return $this->render('internal' , [
'lesson' => $lesson ,
'otherLessons' => $otherLessons
]);
}
}
Файл конфигурации UrlManager:
<?php
$params = array_merge(
require(__DIR__ . '/../../common/config/params.php'),
require(__DIR__ . '/../../common/config/params-local.php'),
require(__DIR__ . '/params.php'),
require(__DIR__ . '/params-local.php')
);
use \yii\web\Request;
$baseUrl = str_replace('/frontend/web', '', (new Request)->getBaseUrl());
return [
'id' => 'app-frontend',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log', 'thumbnail'],
'controllerNamespace' => 'frontend\controllers',
//'defaultRoute' => '/site/index',
'components' => [
'request' => [
'baseUrl' => $baseUrl,
],
'urlManager' => [
'baseUrl' => $baseUrl,
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'home' => 'site/index' ,
'/' => 'site/index',
'frontend/web' => 'site/index',
'index' => 'site/index',
'site' => 'site/index',
'site/login' => 'site/login' ,
'site/contact' => 'site/contact' ,
'site/about' => 'site/about' ,
'site/faq' => 'site/faq' ,
'profile/logout' => 'profile/logout',
'profile' => 'profile/index',
'lesson/<lesson:\w+>/<id:\d+>' => 'courses/internal',
'lesson' => 'courses/internal',
'course/<cat:\w+>/<id:\d+>' => 'courses/index',
'courses' => 'courses/index',
'exam/<cat:\w+>/<id:\d+>' => 'exam/internal',
'exam' => 'exam/index',
'ticket' => 'ticket/index',
'flashcard/<cat:\w+>/<id:\d+>' => 'blog/internal',
'blog/<cat:\w+>/<id:\d+>' => 'blog/cat',
'blog' => 'blog/index',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
],
],
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
],
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
'errorHandler' => [
'errorAction' => 'site/error',
],
'thumbnail' => [
'class' => 'himiklab\thumbnail\EasyThumbnail',
'cacheAlias' => 'assets/gallery_thumbnails',
],
'assetManager' => [
'class' => 'yii\web\AssetManager',
'bundles' => [
'yii\web\JqueryAsset' => [
'js' => [
'jquery.min.js'
]
],
'yii\bootstrap\BootstrapAsset' => [
'css' => [
'css/bootstrap.min.css',
]
],
],
],
],
'params' => $params,
];
Я хочу, чтобы элемент маршрутизации работал для каждой ссылки, которую я поместил именно в раздел метаданных моей CMS