Задача создать хороший SEO-дружественный маршрут с Laravel - PullRequest
0 голосов
/ 27 января 2020

У меня есть проект SEO с Laravel, я хочу использовать маршруты для настройки URL-адресов дружественных c. Это мой маршрут:

# Designs
    Route::get('/d/{article}-{tag}-{design_name}-{design_id}',['as' => 'web.product_design', 'uses' => 'ProductController@getProductDesign']);

Я хочу создать этот оптимизированный для SEO URL: / d / mug-harry-potter-wingardium-leviosa-xfdsfsdf

И это то, что я называю маршрутом к любому laravel виду блейда:

 route('web.product_design',['article' => 'mug'), 'tag' => str_slug('Harry Potter'), 'design_name' => str_slug('Wingardium Leviosa'), 'design_id' => 'xfdsfsdf'])

Проблема в том, что внутри ProductController я не получаю эти параметры, как хотелось бы. Я думаю Laravel сбивает с толку, когда он начинается и когда он заканчивает слизняков. Например, в методе контроллера ...

# Product Design Page
    public function getProductDesign($article,$tag,$design_name,$design_id) {
      dd($article); // It gives me back 'mug', that's right.
      dd($tag); // It return me 'harry', is WRONG, I want to get 'harry-potter'.
      dd($design_name); // It return me 'potter', is WRONG, I want to get 'wingardium-leviosa'.
      dd($design_id); // It return me 'wingardium-leviosa-xfdsfsdf', is WRONG, I want to get 'xfdsfsdf'.
     }

Как создать URL, оптимизированный для SEO, и в то же время иметь возможность правильно принимать параметры в методе контроллера?

1 Ответ

1 голос
/ 27 января 2020

Если вы получите это в своем коде

mug-harry-potter-wingardium-leviosa-xfdsfsdf

и взорвете его на -, то вы окажетесь в той же лодке. Откуда ты знаешь, что Гарри-Поттер был одним целым, а не двумя. Если вы хотите, чтобы в ваших параметрах были пробелы, а затем убили их, тогда вам нужно выбрать другой разделитель в остальной части URL.

Вместо этого вы можете переключиться на _?

Route::get('/d/{article}_{tag}_{design_name}_{design_id}'

поэтому ваш URL теперь

mug_harry-potter_wingardium_leviosa_xfdsfsdf
...