Динамические страницы и чистые конфликты URL - PullRequest
0 голосов
/ 23 января 2010

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

Я не уверен, как мне следует ссылаться на эти страницы. Я на самом деле думал только о двух идеях:

  1. website.com/page/My-Page-Name
  2. website.com/My-Page-Name

Отметим, что я использую mod_rewrite, чтобы перенаправить их в файл, который принимает имя страницы в качестве параметра, получает всю необходимую информацию из БД и отображает ее. Здесь возникает проблема для идеи № 2.

Идея # 1 работает и надежна, но я думаю, что это несколько уродливо, и вы не видите много сайтов, которые ссылаются на другие страницы сайта с другой информацией, добавленной в URL.

РЕДАКТИРОВАТЬ для большей ясности. Намерение упомянутых страниц должно быть статичным в том смысле, что они будут отображать только то, что пользователь их отображает. Они никогда не будут исключать какие-либо данные, в этом случае страницы, отформатированные как в этом примере, будут более подходящими. Я бы больше сравнил эти страницы с часто задаваемыми вопросами SO или со страницей, в которой URL-адреса не отформатированы таким образом.

Идея # 2 выглядит чище, но сталкивается с некоторыми проблемами при использовании mod_rewrite и создании указанных страниц.

Существуют другие части сайта, связанные с ними, которые могут быть имитированы и вызывать конфликты, если вы назвали страницу одинаковой. Например, website.com/page1/ указывает на страницу 1, которая уже существует, но возникнет конфликт, если кто-то захочет создать страницу с именем page1.

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

Последний бит, касающийся mod_rewrite для перенаправления на что-то подобное: RewriteRule ^([A-Za-z0-9-]+)$ getPage.php?p=$1 становится немного уродливым, поскольку он становится немного жадным даже при ограничении того, что будет, за исключением.

Так есть ли у кого-нибудь понимание каких-либо других возможных методов решения этой проблемы или как реализация одного из двух упомянутых может отличаться / лучше?

Спасибо.

Ответы [ 2 ]

1 голос
/ 23 января 2010

Я должен согласиться, что Идея № 1 (website.com/page/My-Page-Name) лучше. Это позволяет избежать наложения псевдонимов и делает остальную часть кода более чистой (например, правило перезаписи просто смотрит на /page/.*). Среди популярных сайтов, использующих эту технику, - Википедия (http://en.wikipedia.org / wiki / C), Everything2 (http://everything2.com / title / Cool + Archive) и Ответы.com (http://www.answers.com / topic / изысканный).

РЕДАКТИРОВАТЬ: Идея № 2 может работать, если вы отличаете пользовательские страницы от встроенных страниц в каждом конкретном случае. часть пути URL чувствительна к регистру, и правило перезаписи может легко это проверить. Пример:

http://example.com/faq <- встроенная страница часто задаваемых вопросов. </p>

http://example.com/Faq <- страница пользователя. </p>

http://example.com/Frequently-asked-questions <- страница другого пользователя. </p>

Я бы по-прежнему пошел с # 1 для простоты и удобства для пользователя, но это по крайней мере избежать псевдонимов.

0 голосов
/ 23 января 2010

Я бы выбрал # 1 , это довольно распространенное соглашение, позволяющее избежать потенциальных проблем. Вы сказали, что не видели ни одного сайта, делающего это, по-видимому, вы не посмотрели вверх

  (look up)
      ^
      |
/1602623/dinamicheskie-stranitsy-i-chistye-konflikty-url
                         ^^^^^^^^^

другие примеры:

http://dsc.discovery.com/videos/mythbusters-raw-kari-goes-macgirlver.html
                         ^^^^^^

http://www.hulu.com/watch/115500/the-colbert-report-alicia-keys-and-stephen-perform
                    ^^^^^

Еще одна альтернатива - заполнить встроенные страницы, чтобы пользовательский контент находился в корне URL. В качестве примера можно привести вики Tcler:

http://wiki.tcl.tk/_/recent        <-- special page padded with _
http://wiki.tcl.tk/coroutine       <-- user generated content
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...