Помогите в настройке .htaccess

Pisarev
На сайте с 16.01.2010
Offline
51
692

Прошу помочь с настройками .htaccess - мне нужно, чтобы при обращении к странице sait.ru/page выдавалась страница sait.ru/page.php (т.е. чтобы вид ссылки был именно sait.ru/page), в тоже время, чтобы при обращении к странице sait.ru/page/ шла переадресация на sait.ru/page

Объясню почему. Сейчас все страницы на сайте с расширением .php, проиндексированы они все в виде sait.ru/page/ - а мне нужно переделать вид ссылок именно как sait.ru/page а не sait.ru/page/

Сейчас в .htaccess прописано так:

RewriteEngine on

RewriteRule ^(.*)/$ /$1.php [NC,L]

соответственно и страницы все работают как sait.ru/page/ (а мне надо убрать этот слэш на конце, но в тоже время и не потерять посетителей, которые приходят по старым ссылкам со слешем на конце, чтобы при заходе по старым ссылкам открывалась страница без слеша на конце).

Заранее благодарен.

iren K
На сайте с 28.12.2008
Offline
222
#1
Pisarev:
Прошу помочь с настройками .htaccess - мне нужно, чтобы при обращении к странице sait.ru/page выдавалась страница sait.ru/page.php (т.е. чтобы вид ссылки был именно sait.ru/page), в тоже время, чтобы при обращении к странице sait.ru/page/ шла переадресация на sait.ru/page

Объясню почему. Сейчас все страницы на сайте с расширением .php, проиндексированы они все в виде sait.ru/page/ - а мне нужно переделать вид ссылок именно как sait.ru/page а не sait.ru/page/

Сейчас в .htaccess прописано так:

RewriteEngine on
RewriteRule ^(.*)/$ /$1.php [NC,L]

соответственно и страницы все работают как sait.ru/page/ (а мне надо убрать этот слэш на конце, но в тоже время и не потерять посетителей, которые приходят по старым ссылкам со слешем на конце, чтобы при заходе по старым ссылкам открывалась страница без слеша на конце).

Заранее благодарен.

много букв и немного не понятно чё хотите..

может так

RewriteCond %{REQUEST_URI} ^([^.]+)/$
RewriteRule ^[^.]+/$ /%1 [QSA,L]

или что-то типа

RewriteEngine on
RewriteRule ^([^/\.]+)/?$ 1.php?id=$1 [L]
c уважением Iren
Pisarev
На сайте с 16.01.2010
Offline
51
#2
iren K:
много букв и немного не понятно чё хотите..

Мне нужно, чтобы все страницы на сайте имели вид sait.ru/page а не sait.ru/page/ (как сейчас) - т.е. без слеша на конце. Может быть понятнее будет, если я напишу так:

1) есть страница sait.ru/page.php - надо, чтобы она отображалась так - sait.ru/page (т.е. просто убираем расширение .php)

2) при обращении к странице sait.ru/page/ надо чтобы открывалась (и отображалась) страница sait.ru/page (т.е. переадресация с страниц со слешем на странице без слеша на конце)..

iren K:
может так
RewriteCond %{REQUEST_URI} ^([^.]+)/$

RewriteRule ^[^.]+/$ /%1 [QSA,L]

с таким кодом работают страницы sait.ru/page/ - но не работают sait.ru/page (т.е. ничего не изменяется по сравнению с моим кодом).

Pisarev добавил 27.02.2011 в 23:11

iren K:
или что-то типа
RewriteEngine on

RewriteRule ^([^/\.]+)/?$ 1.php?id=$1 [L]

с таким кодом вообще не открываются страницы ни так sait.ru/page/ ни так sait.ru/page ( а только со своим расширением sait.ru/page.php )

Pisarev добавил 27.02.2011 в 23:20

Вопрос стоит даже немного иначе.

Как сделать переадресацию всех страниц со слешем на конце на страницы без слеша?

siv1987
На сайте с 02.04.2009
Offline
427
#3
Вопрос стоит даже немного иначе.
Как сделать переадресацию всех страниц со слешем на конце на страницы без слеша?

Ну если так стоит вопрос тогда возможно

RewriteEngine On

RewriteCond %{REQUEST_URI} ./$

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

RewriteRule (.+) $1.php

iren K
На сайте с 28.12.2008
Offline
222
#4
Pisarev:

Как сделать переадресацию всех страниц со слешем на конце на страницы без слеша?

поставьте первый вариант(удаление слеша)+сделайте редирект дублей одной и той же страницы на основной ее адрес..

Pisarev
На сайте с 16.01.2010
Offline
51
#5
siv1987:
Ну если так стоит вопрос тогда возможно

RewriteEngine On
RewriteCond %{REQUEST_URI} ./$
RewriteRule (.+)/$ /$1 [L,R=301]
RewriteRule (.+) $1.php

с таким кодом 500 Internal Server Error

siv1987
На сайте с 02.04.2009
Offline
427
#6
с таким кодом 500 Internal Server Error

Тогда так

RewriteEngine On

RewriteCond %{REQUEST_URI} ./$

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

RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule (.+) $1.php

Pisarev
На сайте с 16.01.2010
Offline
51
#7
siv1987:
Тогда так

RewriteEngine On
RewriteCond %{REQUEST_URI} ./$
RewriteRule (.+)/$ /$1 [L,R=301]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule (.+) $1.php

Спасибо, это работает ;)

siv1987
На сайте с 02.04.2009
Offline
427
#8
Спасибо, это работает

Немного подправил код

чтобы существующие файлы на сервере не реврайтились.

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