#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>
Я не тестировал это, но это должно сработать.