Помогите несчастному по ошибке 301/.htaccess

12
MaulNet
На сайте с 07.08.2005
Offline
348
1410

:gm:

Намудрил там чего-то программист, и не понимаю я уже ничего.

Вся надежда только на вас.

Например,

"<Files _*.*>

Order allow,deny

Deny from all

</Files>

ErrorDocument 404 /404.html

RewriteEngine on

Options +FollowSymlinks

RewriteBase /

RewriteCond %{HTTP_HOST} ^www.sait.ru$

RewriteRule ^(.*)$ http://sait.ru/$1 [NC,R=301,L]

#RewriteRule ^$ index.html [R]

RewriteRule ^$ index.html

RewriteRule ^(.*).html$ rewrite.php

#RewriteRule ^q$ index.php

#RewriteRule ^(.*).php$ index.php"

В данном случае все правильно?

А вот если я хочу ещё добавить некоторые редиректы 301, то все это дело будет выглядеть так?

"<Files _*.*>

Order allow,deny

Deny from all

</Files>

ErrorDocument 404 /404.html

Options +FollowSymLinks

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.sait.ru (а может тут на конце $?)

RewriteRule ^(.*)$ http://sait.ru/$1 [R=permanent,L]

RewriteCond %{HTTP_HOST} ^pod.sait.ru$

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

RewriteCond %{HTTP_HOST} ^pod.sait.ru$

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

Redirect 301 /index.html http://sait.ru/

Redirect 301 /index.html?version=full http://sait.ru/

#RewriteRule ^$ index.html [R]

RewriteRule ^$ index.html

RewriteRule ^(.*).html$ rewrite.php

#RewriteRule ^q$ index.php

#RewriteRule ^(.*).php$ index.php "

P.S. Очень надеюсь на обстоятельный ответ. Ещё за помощь в составлении 2-го варианты спасибо Лелику.

DoTJ
На сайте с 09.10.2005
Offline
33
#1
(а может тут на конце $?)

Нет, без $ все должно работать.

Только я бы добавил ещё экранирование символов.

Написал бы так:

RewriteCond %{HTTP_HOST} ^www\.site\.ru

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

И аналогично для всех остальных случаев.

Всё остальное, вроде бы, должно работать.

Добавлено:

Документация по Модулю mod_rewrite: http://www.sit-host.com/articles/mod_rewrite.html

Документация по URL преобразованиям:

http://www.linuxshop.ru/lib/apache/urlpr.htm

Всегда нужны места под статьи Также куплю ссылки с Ваших ресурсов с постоянным размещением
lexwrlk
На сайте с 12.10.2005
Offline
130
#2
MaulNet:

RewriteCond %{HTTP_HOST} ^www.sait.ru$
RewriteRule ^(.*)$ http://sait.ru/$1 [NC,R=301,L]

я бы так сделал:

RewriteCond %{HTTP_HOST} ^www\.sait\.ru$ [NC]

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

RewriteRule ^(.*).html$ rewrite.php

А какие параметры Вы передаете здесь странице rewrite.php?


RewriteCond %{HTTP_HOST} ^www.sait.ru (а может тут на конце $?)

да, и обратные слеши перед точками:

RewriteCond %{HTTP_HOST} ^www\.sait\.ru$

RewriteRule ^(.*)$ http://sait.ru/$1 [R=permanent,L]

RewriteCond %{HTTP_HOST} ^pod.sait.ru$
RewriteRule ^(.*)$ http://sait.ru/$1 [R=301,L]

здесь опять слеши перед точками забыли:

RewriteCond %{HTTP_HOST} ^pod\.sait\.ru$ [NC]

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

а зачем второй раз:


RewriteCond %{HTTP_HOST} ^pod.sait.ru$
RewriteRule ^(.*)$ http://sait.ru/$1 [R=301,L]

?

это удалите:


Redirect 301 /index.html http://sait.ru/
Redirect 301 /index.html?version=full http://sait.ru/

это уже было раньше:


#RewriteRule ^$ index.html [R]
RewriteRule ^$ index.html
RewriteRule ^(.*).html$ rewrite.php
#RewriteRule ^q$ index.php
#RewriteRule ^(.*).php$ index.php "
СДЛ СДЛу рознь (с) Форест Гамп
MaulNet
На сайте с 07.08.2005
Offline
348
#3

DoTJ, lexwrlk, друзья, я в этом плане 0. :)

Для чего нужно "экранирование символов"?

"А какие параметры Вы передаете здесь странице rewrite.php?" Вроде бы чего-то передается, раз программист сделал.

"да, и обратные слеши перед точками" дак... один говорит, что $ - не надо, другой что наоборот. :)

"а зачем второй раз:" их 2 просто

"?

это удалите:" зачем это удалять?

lexwrlk
На сайте с 12.10.2005
Offline
130
#4

MaulNet,

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

Смотря что сделал програмист в rewrite.php, но сдается мне так как сейчас rewrite.php будет делать одно и то же при любом раскладе: что index.html что news.html

символ конца строки может быть и не надо, но мне кажется правильнее если он будет, ведь символ начала строки вы ставите...

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

DoTJ
На сайте с 09.10.2005
Offline
33
#5
Для чего нужно "экранирование символов"?

В регулярном выражении "." (точка) означает Любой одиночный символ.

В принципе, её экранирование не обязательно, но для "чистоты кода", так сказать, не помешает :)

Добавлено:

"?
это удалите:" зачем это удалять?

Всё что после "?" в принципе не анализируется в представленной Вами конструкции

Redirect 301 /index.html?version=full http://sait.ru/

Если хотите анализировать значение после "?", нужно использовать {QUERY_STRING}.

Так что, думается, эту строку можно удалить.

MaulNet
На сайте с 07.08.2005
Offline
348
#6

DoTJ, эта строка самая важная, т.к. та страница - страница, которая появляется после перехода со вступительной на главную. Вот нужно их склеить как-бы.

"Если хотите анализировать значение после "?", нужно использовать {QUERY_STRING}." Не могли бы тогда написать как должно получиться с {QUERY_STRING}?

DoTJ
На сайте с 09.10.2005
Offline
33
#7

Если хотите редиректить только с /index.html?version=full на http://sait.ru, а с /index.html не редиректить, то напишите так:

RewriteCond %{QUERY_STRING} ^version=full*

RewriteRule ^index.html http://sait.ru? [R=301,L]

У себя проверил - всё работает.

MaulNet
На сайте с 07.08.2005
Offline
348
#8

DoTJ, гм, да нет, с index.html тоже ведь надо...

DoTJ
На сайте с 09.10.2005
Offline
33
#9

Тогда просто напишите

Redirect 301 /index.html http://sait.ru/

Тогда редирект будет и с index.html и с index.html?<x>, где x - любая QUERY_STRING.

MaulNet, Вы бы сказали уже чётко, что хотите, чтобы происходило, тогда Вам проще было бы подсказать :)

MaulNet
На сайте с 07.08.2005
Offline
348
#10

DoTJ, отписал в ПМ. Но вообще тут все это сложно ещё и потому что я лишь знаю то, что нужно получить в итоге (а это избавиться от всех зеркал главной + сложить все эти зеркала в один ПР, чтобы на 5-у больше шансов), а как это получить - не понимаю совсем. :)

Т.е. строчка Redirect 301 /index.html?version=full http://sait.ru/ вообще лишняя?

12

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