Как Сделать .htaccess Редирект?

12
ТБ
На сайте с 15.11.2007
Offline
37
855

Приветствую Всех,

Помогите пожалуйста в таком вопросе:

Как сделать (через .htaccess), чтобы страницы моего сайта site.ru/show/xyz.html перенаправлялись бы на

site.ru/movie.html?rt_movie_id=xyz ?

У меня есть рабочий вариант в случае редиректа несуществующих страниц site.ru/show/xyz.html на site.ru/movie.html?rt_movie_id=xyz

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*).html$ /movie.html?rt_movie_id=$1 [R=301,L]

Что надо изменить в этом коде?

Заранее спасибо.

Gold Line International | Получено За 4 Дня $1380. Это Круто !!! Зарабатывают ВСЕ! (http://main.goldline.pro)
[umka]
На сайте с 25.05.2008
Offline
456
#1

RewriteRule ^show/(.+)\.html$ /movie.html?rt_movie_id=$1 [R=301,L]

Лог в помощь!
ТБ
На сайте с 15.11.2007
Offline
37
#2
'[umka:
;9170887']RewriteRule ^show/(.+)\.html$ /movie.html?rt_movie_id=$1 [R=301,L]

Спасибо большое, но это не сработало.

Я вписал этот код в файл .htaccess, находящийся в папке show

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^show/(.+)\.html$ /movie.html?rt_movie_id=$1 [R=301,L]

gormarket
На сайте с 29.12.2010
Offline
47
#3

Если у Вас в .htaccess не задана база реврайта

т.е.

после строки

RewriteEngine on

нет строки

RewriteBase /

приведенный вариант может на работать.

В этом случае нужно явно указывать протокол и сайт в строке подстановки в RewriteRule при редиректе:


RewriteRule ^show/(.+)\.html$ http://%{HTTP_HOST}/movie.html?rt_movie_id=$1 [R=301,L]

Если RewriteBase есть, возможно на этот запрос накладываются еще и другие правила преобразований из .htaccess

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
iren K
На сайте с 28.12.2008
Offline
222
#4

вот блин,даже интересно: подпишусь на тему..

c уважением Iren
ТБ
На сайте с 15.11.2007
Offline
37
#5
gormarket:
Если у Вас в .htaccess не задана база реврайта
т.е.
после строки
RewriteEngine on
нет строки
RewriteBase /
приведенный вариант может на работать.

В этом случае нужно явно указывать протокол и сайт в строке подстановки в RewriteRule при редиректе:

RewriteRule ^show/(.+)\.html$ http://%{HTTP_HOST}/movie.html?rt_movie_id=$1 [R=301,L]



Если RewriteBase есть, возможно на этот запрос накладываются еще и другие правила преобразований из .htaccess

К сожалению и это не сработало

[umka]
На сайте с 25.05.2008
Offline
456
#6

Приведите уже весь .htaccess целиком :)

Там у вас какие-то правила оказывают дурное влияние на то, что я написал. И RewriteBase тут вряд ли спасёт.

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

Ничуть не интересно. Классический случай, когда все написано верно а у кого-то руки кривые не работает.

А истина кроется здесь

Я вписал этот код в файл .htaccess, находящийся в папке show

Этот пример написан для корня и добавлять его надо там.

ТБ
На сайте с 15.11.2007
Offline
37
#8
siv1987:
Ничуть не интересно. Классический случай, когда все написано верно а у кого-то руки кривые не работает.

А истина кроется здесь


Этот пример написан для корня и добавлять его надо там.

Так файлы видео роликов находятся в папке show поэтому и .htaccess файл там и находится

В корне у меня находится .htaccess с таким содержанием:

<FilesMatch ".(js|css|txt)$">
Header set Cache-Control "max-age=15120000"
</FilesMatch>

ExpiresActive on
ExpiresByType text/css "modification plus 3 months"
ExpiresByType text/x-javascript "modification plus 3 months"

AddType application/x-httpd-php .php .htm .html .phtml

ErrorDocument 404 http://rutuber.ru/404.php

А в корне папки show находится .htaccess с таким сод:

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^show/(.+)\.html$ /movie.html?rt_movie_id=$1 [R=301,L]

<FilesMatch ".(js|css|txt)$">
Header set Cache-Control "max-age=15120000"
</FilesMatch>

ExpiresActive on
ExpiresByType text/css "modification plus 3 months"
ExpiresByType text/x-javascript "modification plus 3 months"

AddType application/x-httpd-php .php .htm .html .phtml

Тигран Бароян добавил 09.07.2011 в 10:08

Кто-нибудь сможет мне помочь все-таки?

Прошу Вас.

Слоняра
На сайте с 18.12.2004
Offline
229
#9

Добрый денб.

Не стал создавать новую тему, т.к. вопрос похож.

В индексе уже есть вот такой вариант входа на страницу http://site.ru/directory/

После перевода на другой движок, по этому адресу редиректит на 404.

Чтобы попасть на страницу, нужно набрать - http://site.ru/directory/index.html

Мне нужно сделать чтобы при заходе на directory/ редиректило на directory/index.html

Всего таких директорий на сайте - 6.

Я могу для каждой свой htaccess сделать если нельзя сделать один в корне.

Пожалуйста, помогите с файлом .htaccess корректно разобраться.

Текущий выглядит так:

AddHandler application/x-httpd-php .php .html
AddType application/x-httpd-php .php .html
ErrorDocument 404 http://site.ru/404.php
ErrorDocument 403 http://site.ru/404.php
ErrorDocument 500 http://site.ru/404.php

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
</IfModule>
нихт подпись...
iren K
На сайте с 28.12.2008
Offline
222
#10
Слоняра:


Чтобы попасть на страницу, нужно набрать - http://site.ru/directory/index.html

Мне нужно сделать чтобы при заходе на directory/ редиректило на directory/index.html

так попробуйте

RewriteEngine on

RewriteBase /
RewriteCond %{REQUEST_URI} ^/index\.html$
RewriteRule ^(.*)$ http://site.ru/ [R=301,L]
12

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