Nano Hash - криптовалюты, майнинг, программирование

PHP — некоторые способы создания дружественных URL-адресов для блога или каталога

У меня были сомнения в этом в течение некоторого времени, и теперь, когда я разрабатываю веб-сайт с нуля, я хотел бы узнать, как сделать URL-адреса моего веб-каталога удобными и описательными. что-то вроде этого.

Вместо www.mysite.com/product.php?id=8799 что-то вроде www.mysite.com/super-videocard-with-super-features или даже www.mysite.com/products.php?ref=videocard-with-super-features

Пока они дружелюбны и описательны, я не возражаю против .php? вещей.

Как они делают это в CMS для электронной коммерции, чтобы показывать такие URL-адреса?

Вот что я подумал:

1) Сохранение URL-адреса в MYSQL в таблице продуктов, столбце с именем URL-адрес, в котором хранится значение типа «супер-видеокарта-с-супер-функциями» (может быть форматирование названия продукта и его сохранение), затем при выборке продукты, делая ссылки похожими на <a href="videocard-with-super-features">Click here to see product</a>

2) Используя файл HTACCESS и каждый раз, когда продукт вставляется в базу данных, PHP берет файл HTACCESS и добавляет правило перезаписи... но это кажется сложным, и что происходит, когда вам нужно обновить название продукта? как найти эту строку в файле HTACCESS без написания сверхсложного алгоритма?

Любые идеи о том, как добиться этого, как это делается в серьезном приложении для электронной коммерции?

16.10.2014


Ответы:


1

То, что вы ищете, называется «Front Controller» — скрипт, который соответствующим образом обрабатывает все запросы и маршруты.

Вы не хотите возиться с перезаписью, кроме отправки всех запросов на ваш контроллер (или один из набора - например, контроллер продукта или контроллер категории). Сам контроллер может обрабатывать логику того, что означает URL-адрес запроса, получая доступ к нему через суперглобальный $_SERVER['REQUEST_URI'] и либо маршруты жесткого кодирования (URL-адрес запроса к фактическому исполняемому коду), либо извлекая конфигурации из БД или что-то еще.

Взгляните на это руководство: http://www.sitepoint.com/front-controller-pattern-1/

16.10.2014
  • Спасибо... Да, я работаю с шаблоном MVC. Я собираюсь проверить эту статью. 16.10.2014

  • 2

    1, вероятно, было бы проще сделать ... и это требует лишь некоторых усилий, чтобы проверить вашу базу данных, на что указывает идентификатор URL-адреса.

    скажем, я отправляю URL-адрес хранимой процедуре. таким образом

    exec [someProcedure] 'videocard-with-super-features'
    

    затем хранимая процедура получит помеченный идентификатор строки 'videocard-with-super-features' и вместе с ним получит правильные помеченные данные.

    16.10.2014

    3

    Вы можете использовать файл .htaccess, но это далеко не так сложно, как вы думаете :)

    Скрытие расширения .php в файлах:

    RewriteEngine On
    # turn on the mod_rewrite engine
    
    RewriteCond %{REQUEST_FILENAME}.php -f
    # IF the request filename with .php extension is a file which exists
    RewriteCond %{REQUEST_URI} !/$
    # AND the request is not for a directory
    RewriteRule (.*) $1\.php [L]
    # redirect to the php script with the requested filename
    

    Затем создайте свои ссылки как <a href='product'> вместо <a href='product.php'>.

    И скрытие параметров GET:

    RewriteEngine On
    # turn on the mod_rewrite engine
    
    RewriteRule ^product/([0-9]+)$ product?id=$1 [L,QSA]
    # Make /product/123 an alias for /product?id=123
    RewriteRule ^product/([A-Za-z0-9_\-]+)$ product?ref=$1 [L,QSA]
    # Make /product/productName an alias for /product?ref=productName
    

    Опять же, вам нужно изменить существующие ссылки, настроенные как <a href='/product.php?ref=videocard-with-super-features'>, и изменить их на <a href='/product/videocard-with-super-features'>.

    Убедитесь, что переписывание для удаления расширения .php находится первым в файле, если вы используете оба.

    16.10.2014
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..