Смена движка: проблема с УРЛами

K
На сайте с 29.01.2009
Offline
19
548

Добрый день. Помогите пожалуйста в решении некоторой проблемы... Меняю движок сайта. Раньше были страницы вида http://site.ru/pricelist/ , а новый движок способен делать так http://site.ru/pricelist (без слэша на конце).

При этом http://site.ru/pricelist и http://site.ru/pricelist/ - это разные пути. А у меня весь смысл был в том, чтобы урлы остались такие же, как на предыдущем движке.

Вопрос: как не ковыряя движок сайта сделать так, чтобы слэш появлялся в конце урла? Или таких вариантов нет и нужно ковырять движок сайта?

Может есть какое-то решение? Заранее спасибо

P
На сайте с 19.03.2009
Offline
17
#1

Вом должно помочь:

RewriteRule (.+)/ index.php?query=$1 [L,QSA]

Надо смотреть хтакесс

Помогу с вёрсткой, html, css, js, jquery, php, mysql ($) icq 8938933 Быстрый, удобный и недорогой хостинг (http://sweb.ru/p17046) Виза в Великобританию (http://www.englishexpert.ru/velikobritaniya/viza/viza-v-velikobritaniu/)
K
На сайте с 29.01.2009
Offline
19
#2
poyzn:
Вом должно помочь:

RewriteRule (.+)/ index.php?query=$1 [L,QSA]


Надо смотреть хтакесс

Это все решение? Дома попробую :) Спасибо

P
На сайте с 19.03.2009
Offline
17
#3

Решение абстрактное, зависит от того каким образом у вас работает RewriteRule. Имена файла и переменной могут различаться.

K
На сайте с 29.01.2009
Offline
19
#4
poyzn:
Решение абстрактное, зависит от того каким образом у вас работает RewriteRule. Имена файла и переменной могут различаться.

Может мне сюда выложить содержимое файла хтакцесс?

KSinner добавил 13.08.2010 в 22:49

poyzn:
Решение абстрактное, зависит от того каким образом у вас работает RewriteRule. Имена файла и переменной могут различаться.

Вот что написано в моем файле .htaccess


AddDefaultCharset UTF-8

RewriteEngine on
RewriteCond $1 !^(index\.php|user_guide|uploads/.*|favicon\.ico|favicon\.png|captcha/.*|application/modules/.*/templates|templates|js|robots\.txt|application/controllers/install/images/.*)
RewriteRule ^(.*)$ /index.php/$1 [L]

Как я понимаю, надо что-то изменить в строке RewriteRule ^(.*)$ /index.php/$1 [L]

Вот только что? :)

P
На сайте с 19.03.2009
Offline
17
#5
KSinner:
Как я понимаю, надо что-то изменить в строке RewriteRule ^(.*)$ /index.php/$1 [L]
Вот только что? :)

Хм, давайте рассуждать логически.

Но по идее чтобы добавить в урл слэш необходимо сделать редирект на этот адрес

пробуем:

RewriteRule (.*) /index.php/$1/ [R=301,L]

Но видимо у вас все такие запросы, поэтому запрос к серверу зацикливается и сайт не открывается.

Значит нужно менять RewriteCond. Всё усложняется. Пробуем после RewriteEngine on воткнуть:

RewriteCond %{REQUEST_URI} ^/.+[^\/]+$

RewriteRule ^(.*)$ /$1/ [R=301,L]
K
На сайте с 29.01.2009
Offline
19
#6
poyzn:
Хм, давайте рассуждать логически.
Но по идее чтобы добавить в урл слэш необходимо сделать редирект на этот адрес
пробуем:
RewriteRule (.*) /index.php/$1/ [R=301,L]


Но видимо у вас все такие запросы, поэтому запрос к серверу зацикливается и сайт не открывается.
Значит нужно менять RewriteCond. Всё усложняется. Пробуем после RewriteEngine on воткнуть:
RewriteCond %{REQUEST_URI} ^/.+[^\/]+$

RewriteRule ^(.*)$ /$1/ [R=301,L]

Если пишу так:

RewriteRule (.*) /index.php/$1/ [R=301,L]

Тогда урлы выглядят так: http://site.ru/index.php/contacts/

Ну а если пишу

RewriteCond %{REQUEST_URI} ^/.+[^\/]+$

RewriteRule ^(.*)$ /$1/ [R=301,L]

Тогда набирая http://site.ru/contacts редиректит на http://site.ru/contacts/ - вот только открывается страница с ошибкой :(

P
На сайте с 19.03.2009
Offline
17
#7

1. Какая ошибка?

2. Как вариант можно попробовать убрать "L" из [R=301,L]

K
На сайте с 29.01.2009
Offline
19
#8

Проблему решил другим путем. В одном из php-шных файлов движка была настройка... Что-то типа добавление суффикса в конец урла. Можно было дописать .htm ,а я написал /

Спасибо всем за помощь

G_Smoff
На сайте с 06.04.2006
Offline
115
#9

KSinner, подскажите, что за cms такая?

Signature

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