Web Analytics Made Easy - StatCounter
Главная Блог Сгенерируйте дружественный к SEO URL-адрес в Laravel

Сгенерируйте дружественный к SEO URL-адрес в Laravel

Сгенерируйте дружественный к SEO URL-адрес в Laravel

Введение

Чтобы ранжировать ваш сайт в поисковой системе и получать органический трафик на ваш сайт, созданный на Laravel, очень важно генерировать ссылки на ваши веб-сайты в формате, оптимизированном для SEO. Большинство разработчиков не заботятся о правильном и оптимизированном для SEO формировании URL-адресов, чтобы их веб-сайт не попал в рейтинг поисковой системы.

Некоторые разработчики генерируют URL-адрес веб-сайта как серверное приложение, например (example.com/123 или example.com/posts/123). URL-адреса веб-сайтов отображаются в поисковой выдаче (страница результатов поисковой системы) вместе с заголовком веб-страницы. Если вы не используете дружественный для SEO URL-адрес рядом с заголовком веб-страницы, тогда URL-адрес не отражает содержание этого URL-адреса и не поможет вашему веб-сайту соответствовать ключевому слову поиска пользователя.

В результате ваш веб-сайт не получает рейтинга, и вы теряете больше трафика от поисковых систем, таких как Google, Yahoo, Bing и т. Д. Здесь, в этом посте, я покажу вам пошаговое руководство по созданию оптимизированного для SEO URL-адреса для вашего Laravel. сделал сайт.

SEO дружественное формирование URL

Для любого веб-сайта, связанного с блогом / статьей, мы можем сгенерировать URL-адрес для отдельного сообщения, страницы блогов / статей, страницы категории, как показано ниже.

Хорошо

формат URLРоут
example.com/postsRoute::get('/posts','SiteController@posts');
example.com/categories/tips-and-tricksRoute::get('/categories/{slug}','SiteController@categoryPosts');
example.com/posts/awesome-post-slugRoute::get('/posts/{slug}','SiteController@postDetails');

Плохо

example.com/posts/123
example.com/posts?id=123
example.com/categories/45
example.com/category?id=45

Процесс создания URL-адресов, оптимизированных для SEO

  • Добавить заголовок столбца в таблицы.
  • Настройка модели для уникального ярлыка и ссылки.
  • Код контроллера сайта.
  • Просмотр кода и создание ссылок.

Добавить в таблицы столбец slug

Мы будем генерировать URL-адреса с помощью уникального ярлыка для более читабельного и SEO-удобного использования вместо использования идентификатора записи. Чтобы сделать URL-адрес непрерывным, нам нужно добавить столбец уникального типа в наши категории и таблицу сообщений, если он не был добавлен раньше.

Настройка модели для уникального slug и ссылки

Нам нужен пакет cviebrock / eloquent-sluggable для генерации уникального URL-адреса слага. Позвольте установить этот пакет.

composer require cviebrock/eloquent-sluggable

Категория модели

<?php namespace App;

use Illuminate\Database\Eloquent\Model;
use Cviebrock\EloquentSluggable\Sluggable;

class Category extends Model
{
    use Sluggable;

    public function sluggable()
    {
        return [
            'slug' => [
                'source' => 'name'
            ]
        ];
    }

    public function getLink()
    {
        return url('categories/'.$this->slug);
    }

    public function posts()
    {
        return $this->hasMany('App\Post');
    }

    //other code

}

Эта настройка модели категории автоматически сгенерирует для нас уникальный URL-адрес слага из имени категории во время создания категории, а getLink поможет нам получить ссылку на наше желание из каждого объекта категории.

$category = new Category([
    'name' => 'Tips and Tricks',
]);

$category ->save();
//$category->slug is "tips-and-tricks"

Модель поста

<?php namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use Sluggable;

    public function sluggable()
    {
        return [
            'slug' => [
                'source' => 'title'
            ]
        ];
    }

    public function getLink()
    {
        return url('posts/'.$this->slug);
    }

    public function category()
    {
        return $this->belongsTo('App\Category');
    }

    //other code

}

Эта настройка модели поста автоматически сгенерирует для нас уникальный URL-адрес слага из заголовка поста во время создания поста, а getLink поможет нам получить нашу желаемую ссылку на пост из каждого объекта поста.

$post= new Post([
    'title' => 'Awesome Post Title',
]);

$post->save();
//$post->slug is "awesome-post-title"

Код контроллера сайта

Давайте напишем код для нашего контроллера сайта для просмотра ответа в соответствии с нашим определением маршрута.

<?php

namespace App\Http\Controllers\Site;

use App\Category;
use App\Post;


class SiteController extends Controller
{

    public function posts(){
        $data = Post::with('category')->paginate(20);
        return view('site.posts',compact('data'));
    }

    public function categoryPosts($slug){
        $data = Category::with('posts')->where('slug',$slug)->first();
        return view('site.category-posts',compact('data'));
    }

    public function postDetails($slug){
        $data = Category::with('category')->where('slug',$slug)->first();
        return view('site.post-details',compact('data'));
    }

}

Просмотр кода и создание ссылки

Получение всех сообщений с разбивкой на страницы в example.com/posts

<!--resources/views/site/posts-->

<h2>Posts</h2>
@foreach($data as $post)
    <div>
        <p><a href="{{$post->getLink()}}">{{$post->title}}</a></p>
        <p>Category: <a href="{{$post->category->getLink()}}">{{$post->category->name}}</p>
    <div>
@endforeach

Обратите внимание: нам не нужно вручную создавать ссылку на публикацию, ссылку на категорию. С помощью метода getLink он будет автоматически работать за нас в соответствии с определением метода getLink нашей модели.

Получайте посты по категориям в example.com/categories/my-category

<!--resources/views/site/category-posts-->

<h2>Category: {{$data->name}}</h2>
@foreach($data->posts as $post)
    <div>
        <p><a href="{{$post->getLink()}}">{{$post->title}}</a></p>
        <p>Category: <a href="{{$post->category->getLink()}}">{{$post->category->name}}</p>
    <div>
@endforeach

Подробности публикации в example.com/my-unique-post-title

<!--resources/views/site/post-details-->

<h2>{{$data->name}}</h2>
<p>Category: <a href="{{$data->category->getLink()}}">{{$data->category->name}}</p>

<p>{!!$data->description!!}</p>

Выше я показал вам пошаговый процесс создания оптимизированного для SEO URL в Laravel Framework для сайта блога / статьи. В соответствии с этим процессом вы можете сгенерировать дружественный к SEO URL-адрес в среде Laravel для других типов веб-сайтов, таких как электронная коммерция, сайт со списком каталогов, новостной сайт и т. д.

Ссылки

Generate SEO friendly URL in Laravel

Раз в неделю мы отправляем дайджест с самыми популярными статьями. Подпишитесь на наши новости и мы сделаем для вас бесплатно аудит вашего сайта.