Заменить articles.php?id=123 на /articles/123-title-of-article

#php #mysql #url-rewriting

#php #mysql #переписывание url

Вопрос:

Я создаю сайт на php mysql, на котором будет множество статей. Я довольно хорошо разбираюсь в html, php, jquery и т.д. Теперь мне нужно, какие шаги мне нужно предпринять, чтобы не иметьhttp://www.mysite.com/articles.php?id=123 но чтобы иметь http://www.mysite.com/articles/123-title-of-article ? Спасибо

Комментарии:

1. Возможно, вы предпочтете использовать mod_rewrite для этого, а не PHP.

2. Поскольку это делается на веб-сервере, вы можете захотеть добавить программное обеспечение вашего веб-сервера, если это не apache.

3. mod_rewrite может переводиться /123-title-of-article в /articles.php?id=123 ; он не будет генерировать красивые ссылки для вас. Это вы должны сделать в PHP.

4. Спасибо всем, кто ответил. Ценные советы.

Ответ №1:

Ну, вам нужно, например, сохранить токен для каждой статьи (для оптимизации), как в вашем примере « 123-title-of-article «. Следующий шаг — использовать .htaccess и mod_rewrite из Apache (если это ваш случай).

Если вы будете делать это только для этой статьи «папка страницы» ( articles/ ), я предлагаю вам сделать эту папку допустимой и сделать .htaccess внутри нее перенаправление на articles.php?id={POST_ID_FOUND_BY_TOKEN} .

Взгляните также на $_SERVER["REQUEST_*"] переменные из PHP.

Смотрите: на этой странице в конце статьи есть несколько примеров.

Ответ №2:

Обычный способ сделать это — использовать mod_rewrite. Вы создаете файл .htaccess, который незаметно перенаправляет последний запрос на первый.

Вы можете прочитать об этом здесь:http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

Ответ №3:

Вам понадобится что-то под названием mod_rewrite, которое является модулем apache.

Конфигурация выглядит следующим образом (украдена из клиентской установки drupal):

 <IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule articles/(.*)$ articles.php?id=$1 [L,QSA]
</IfModule>
  

Я не тестировал это, но это должно сработать.