Чистые URL бедного человека против Mod_Rewrite

8

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

Пример:
http://www.example.com/products/widgets/index.php

http://www.example.com/products/sprockets/index.php

Для нового сайта есть разговоры об использовании mod_rewrite:

  1. Пользователь запрашивает http://www.example.com/products/widgets/
  2. mod_rewrite отправляет их http://www.example.com/index.php?page=products/widgets
  3. index.php отправляет их на реальную страницу http://www.example.com/products/widgets.php

Я не вижу, как весь этот ригамароль приносит какую-то ценность. Сотрудник в пользу mod_rewrite утверждает, что меньшее количество каталогов как-то равнозначно упрощению обслуживания.

Ни одна из наших существующих страниц не использует переменные в строке запроса. Весь контент находится в самих файлах. Мы планируем разместить некоторый контент в базе данных, например, пресс-релизы и предстоящие выставки, на которых мы будем присутствовать, но подавляющее большинство страниц будет использовать PHP только для включения общих HTML, таких как заголовок, нижний колонтитул и навигация. Я определенно был бы готов использовать mod_rewrite для такого динамического контента.

Есть ли какое-то большое преимущество, которое мне не хватает, что мы должны использовать mod_rewrite для всего? Достаточно ли чистых URL-адресов Бедного человека ™ для частей нашего сайта, не связанных с базой данных?

Скотт
источник
я так сильно ... слишком много хлопот для чистого URL ...

Ответы:

3

Трехэтапный процесс, который вы описали выше, кажется излишним и бесполезным, как указано выше. Если на шаге 3 index.php переносит их на «настоящую» страницу, то зачем вообще вообще беспокоиться об mod_rewrite? Это сведет на нет преимущества, которые предлагает mod_rewrite. А именно, удобный для поисковых систем URL и более простое обслуживание сайта. Если вы остановитесь на втором шаге, вы получите пользу от mod_rewrite, имея только одну страницу для обслуживания, но она может обслуживать практически неограниченное количество страниц и быть прозрачной для пользователя и поисковых систем, так как они видят только URL на шаге 1.

Джон Конде
источник
4

Это миф, что "/ pagename" или "/pagename.htm" лучше для поисковых систем, чем "/pagename.php". По крайней мере, в Google определенно нет оснований для этого (и я полагаю, что и другие). Точно так же даже «index.php? Page = pagename» не нужно переписывать как «/ pagename» - поисковые системы могут без проблем понимать эти URL-адреса, и Google даже подтвердил, что предпочитает, чтобы пользователи не переписывали их излишне ( http://googlewebmastercentral.blogspot.com/2008/09/dynamic-urls-vs-static-urls.html ). Таким образом, при условии, что вы не создаете бесконечные URL с параметрами URL, переписанные URL не обязательно более удобны для поисковых систем, чем не переписанные URL .

Тем не менее, пользователи могут предпочесть хорошие URL-адреса вместо уродливых / сложных URL-адресов. Если ваше основное беспокойство вызывает наличие хороших URL-адресов в результатах поиска, я бы посмотрел на микроформат, который теперь поддерживает Google ( http://googlewebmastercentral.blogspot.com/2010/09/rich-snippets-testing-tool- Улучшения.html ), поскольку они часто могут обеспечить еще лучший пользовательский опыт в отношении URL-адресов в результатах поиска. Это не решит проблему пользователей, которым нужны красивые URL-адреса для ссылок, но при условии, что ваши URL-адреса не являются бесконечно сложными (а ваши примеры - нет), скорее всего, это не даст ощутимой разницы, если вы переписываете их для этого. потребительная случай. Если нет ощутимых различий, то, вероятно, не имеет смысла тратить время на разработку и обслуживание такой установки.

Джон Мюллер
источник
1

То, что вы называете «Чистые URL-адреса бедняков», - это просто чистые URL-адреса, реализованные через файловую систему. Вы можете использовать эти типы URL-адресов, используя mod_rewrite, так же, как вы можете иметь второй тип URL-адресов без mod_rewrite.

Чистые URL-адреса - это именно то, что подразумевает название - чистые или выглядящие URL-адреса. Обе

http://yoursite/foo/bar

а также

http://yoursite/foo/bar.php

чистые URL. Термин «чистые URL» не указывает какую-либо конкретную реализацию. Вы можете реализовать чистые URL-адреса, генерируя кэшированные HTML-страницы каждый раз, когда сайт обновляется, если хотите. mod_rewrite просто позволяет вам отделить структуру URL от структуры файла без перенаправлений или фреймов.

Судя по тому, как это звучит, вы в данный момент не используете сайт, управляемый базой данных. И хотя технически он может рассматриваться как динамический веб-сайт, он, скорее всего, больше относится к статическому концу спектра, если вы в основном используете PHP только для включения верхних и нижних колонтитулов. Это хорошо для небольших сайтов, которые редко нуждаются в обновлении, но по мере того, как ваш сайт становится больше, вам необходимо внедрить настоящую CMS.

Где mod_rewrite сияет, когда вы начинаете принимать во внимание ремонтопригодность. Вместо того, чтобы иметь сотни файлов php для каждой страницы продукта (с большим количеством избыточного кода), вы можете просто иметь один скрипт, который обрабатывает все запросы. Но если у вас больше нет однозначного сопоставления фактических файлов .php с отображаемыми веб-страницами, то вам нужно будет использовать что-то вроде mod_rewrite для интеллектуальной маршрутизации запросов страницы, сохраняя при этом иллюзию структуры файла / каталога. там.

Так что это не тот дополнительный подкаталог, о котором вам следует беспокоиться. Дело в том, что вы создаете отдельный скрипт .php для каждой страницы вашего сайта.

Лез Мажесте
источник
1

«Чистые URL» часто означает отсутствие файла ext; это помогает скрыть детали реализации от зрителя. Преимущество этого в том, что когда вы решите перевести свой сайт, скажем, с PHP на Ruby on Rails, вы можете сделать это без изменения одного URL.

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

http://www.example.com/news/2010/10/our-new-url-system/

Всегда может быть хорошим URL, даже если вы полностью измените базовую архитектуру или перейдете от статических файлов к динамическим ... или наоборот.

Erik
источник
0

Мне кажется, что весь ваш контент в базе данных будет намного быстрее и проще в обслуживании, чем копаться в большой файловой системе каждый раз, когда вам нужно будет делать обновления. Как уже упоминал Джон Мюллер, хороший URL не будет иметь большого значения в вашем рейтинге, однако вы должны рассмотреть возможность использования Mod_Rewrite, чтобы сохранить ваши существующие URL и их значение. IE если:

example.com/widgets/index.php имеет 1000 ссылок, указывающих на него, и вы изменить что быть example.com/pages/widgets.php вы рискуете потерять много из этого значения (вы, конечно, можете перенаправить его, но это спорно ли или нет то будет проходить одинаковое значение)

Я бы рекомендовал, если вы продолжаете обслуживать статический контент, продолжая использовать файловую систему, если вы конвертируете его в динамический контент, используйте Mod_Rewrite, чтобы сохранить текущую структуру URL в такте. Или, если невозможно сохранить текущую структуру, используйте Mod_Rewrite, чтобы создать структуру, которая будет стабильной для будущих обновлений.

Joshak
источник
0

Как уже было сказано, иметь .phpили ?page=не имеет значения. Что имеет значение, если вы делаете что-то вроде этого:

http://www.example.com/index.php?page=13

Hello71
источник