Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Переформатирование адресной строки


Автор: AGENTxXx 10.4.2012, 21:21
Добрый вечер! 
Не совсем нашел нужный раздел, но думаю тут более подходящий раздел.
Задача в следующем: хочу сделать так: www.site.ru/articles/stranica/, а сейчас следующим образом: www.site.ru/articles.php?name=stranica. 
Общий принцип построения: есть страница articles.php, где просто подключается нужная страница через require, но хотелось бы чтобы адрес соответствовал имени статьи. Вычитал по данному поводу, что данный способ дает положение выше в поисковиках.

Надеюсь правильно объяснил!

Я так думаю, что наверное что то нужно делать с файлом .htaccess... Хотя если честно - я не знаю как это вообще сделать...
Или хотя бы ссылочку киньте как это можно сделать.

Всем большое спасибо! =)

Автор: Aliance 11.4.2012, 09:52
Нужно использовать mod_rewrite. В файле .htaccess пишем что-то типа такого:
Код

RewriteEngine On
RewriteBase /
RewriteRule articles/([a-z0-9_-]+)([\/]{0,1})$ articles.php?name=$1 [L]
RewriteRule articles.php - [F]

Автор: AGENTxXx 20.4.2012, 11:29
Что - то не получается у меня((( Может кто-нибудь ссылку скинуть где нормально это описано, или хотя бы логику объяснить действий...А именно [L], [F] что это такое?


Давайте лучше сразу пример конкретный приведу на крайний случай:

Сейчас у меня так: site.ru/articles.php?sec=43&razd=50&name=utochnenie_kraya

А мне бы хотелось чтобы выглядело это так:
site.ru/articles/utochnenie_kraya/

Ну я вот думаю должно быть что-то вроде следующего:

RewriteEngine On
RewriteBase /
RewriteRule articles.php?([a-z0-9_-]+)([\/]{0,1})name=(.*)$ articles/$3/ [L]

Но, когда я пишу name, то все, уже ни куда не переводится...

Автор: Sanchezzz 21.4.2012, 13:45
Код

#site.dew/articles/<шаблон>/
RewriteCond %{REQUEST_URI} ^/articles/([a-zA-Z0-9\-\_]+)/?$ [NC]
RewriteRule ^(.*)$    /articles.php?name=%1[L]
# след правило для того что бы при запросе /articles открывался файл articles.php
RewriteCond %{REQUEST_URI} ^/([a-zA-Z0-9\-\_]+)/?$ [NC]
RewriteRule ^(.*)$    /%1.php[L]


для передачи больше параметров вам нужно их подставлять в строку и помните максимальное количество правил N < 9

Автор: AGENTxXx 16.5.2012, 21:22
Всем БОЛЬШОЕ СПАСИБО! 
В общем, если честно, то не совсем правильно в начале понял, как работает rewrite!
Я думал, что url сам перекодируется из строки с get запросами, а оказывается нужно делать наоборот - делать ссылки такие как я хочу, а обращаться с get запросами.. В общем - разобрался! 

Еще раз - СПАСИБО! =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)