Изменение ссылки с помощью mod_rewrite

12
L
На сайте с 13.10.2010
Offline
27
865

Есть ссылки на сайте вида domen/cat/post/artname. В моем случае post - это контроллер вывода любого поста. Мне нужно чтобы ссылки отображались для поисковиков и посетителей как domen/cat/artname. Вроде бы это можно сделать с помощью mod_rewrite, но я не могу понять как. Эксперты программеры помогите.

.htaccess сейчас такой:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

AddDefaultCharset UTF-8

php_flag magic_quotes_gpc Off

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#1

Вынужден Вас разочаровать. Htaccess не нужен, чтобы ссылки отображались для поисковиков и посетителей как domen/cat/artname.

Просто пишите <a href="domen/cat/artname">Ссылка с текстом</a> и будет Вам щасте;)

Ну а для ПРЕОБРАЗОВАНИЙ:


RewriteRule ^([^/]+)/post/([^/]+))$ /$1/$2

Мне вот всегда интересно было, как люди, которые знают про контроллер не могут справиться с Мод_Реврайтом, а уж тем более понять, для чего он. Расскажите, ТС!?

Подпись))
IL
На сайте с 20.04.2007
Offline
435
#2
Милованов Ю.С:
которые знают про контроллер

Знать "про ..." можно по-разному.

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
L
На сайте с 13.10.2010
Offline
27
#3
Милованов Ю.С:


Ну а для ПРЕОБРАЗОВАНИЙ:

RewriteRule ^([^/]+)/post/([^/]+))$ /$1/$2


Именно для преобразований. Согласен, не профи, только второй проект на MVC.

Но данная строка при добавлении кладет весь сайт, при обращении к домену ошибка 500

siv1987
На сайте с 02.04.2009
Offline
427
#4
Loken:
Мне нужно чтобы ссылки отображались для поисковиков и посетителей как domen/cat/artname. Вроде бы это можно сделать с помощью mod_rewrite, но я не могу понять как.

У вся логика работает на уровне скрипта, а в htaccess-е используется только реврайт все запросов на index.php. Поэтому и отображение для поисков и тд надо делать в скрипте.

L
На сайте с 13.10.2010
Offline
27
#5
siv1987:
У вся логика работает на уровне скрипта, а в htaccess-е используется только реврайт все запросов на index.php. Поэтому и отображение для поисков и тд надо делать в скрипте.

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

siv1987
На сайте с 02.04.2009
Offline
427
#6

Loken, все "преобразования" с такой системы чпу делается в скрипте, так как разборка идет за счет REQUEST_URI, ну или в вашем случае - переменной route. Поэтому, если там есть какой-то маркер типа post который обязателен для работы системы, то так просто его не выкинуть.

L
На сайте с 13.10.2010
Offline
27
#7

siv1987, index.php как единая точка входа тоже обязателен для работы, но его же можно выкинуть (заменить), почему нельзя заменить другие неудовлетворительные ссылки?

siv1987
На сайте с 02.04.2009
Offline
427
#8

При чем тут index.php? То, что все ссылки реврайтятся на index.php не значит что его присутствие обязательно в адресе (REQUEST_URI), тут как раз наоборот.

Loken:
почему нельзя заменить другие неудовлетворительные ссылки?

Потому что это метки, которые показывают что это пост, а это не пост. Их не просто так для красоты добавили.

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#9

ТС, моск не делайте!

в index.php в самом начале:


$_GET['route'] = preg_replace(#([^/]+)/([^/]+)#uis', '$1/post/$2', $_GET['route']);

Ну либо в REQUEST_URI или еще где, в зависимости что используете в своей MVC.

Может в РЕГЭКСПе и ошибка, но идею, думаю, донес;)

siv1987, да у него же MVC☝

siv1987
На сайте с 02.04.2009
Offline
427
#10
Милованов Ю.С:
но идею, думаю, донес

идея право на жизнь имеет, на под такой регексп может попасть все что угодно, /cat/cat/, /cat/post/, /folder/хз/. Если бы /cat/ это было бы какое-то конкретное слово, и не-было бы вложенных кэт-ов, то тогда еще можно было бы поговорить.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий