301 редирект htaccess (тема 100500)

Утка-робот
На сайте с 08.07.2008
Offline
222
889

Дано:

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ http://site.ru/$1 [L,R=301]
</IfModule>

Задача:

/page.htm -> /page/

/page.htm#5bla -> /page/#5bla

Помогите двоечнику :-)

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

В самом начале:

Redirect 301 /page.htm /page/

Если вместо "page.htm" может быть "что_угодно.htm", то после RewriteBase /

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

А вторая задача с помощью сервера нерешабельна, т.к. анкор (то, что после "#") на сервер не передаётся. Т.е. если это позарез необходимо, то нужно делать с помощью javascript.

Лог в помощь!
Утка-робот
На сайте с 08.07.2008
Offline
222
#2

Редактируется...

[umka]
На сайте с 25.05.2008
Offline
456
#3
Утка-робот:
А если так?
/page.htm#5bla -> /page/

Браузеры передают в запросе только "/page.htm" и всё.

Поэтому единственным вариантом будет сделать таки эту страничку, и на ней ява-скриптом сделать нужный редирект. Но он (редирект) не будет читаться поисковиками.

Утка-робот
На сайте с 08.07.2008
Offline
222
#4

В общем, строка

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

решила обе задачи. Как ни странно :-) Все работает и с #, и без.

Спасибо.

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

Отлично. Только проверьте на всякий случай, возможно не все браузеры передают анкор при редиректе :)

Утка-робот
На сайте с 08.07.2008
Offline
222
#6

Только IE теряет анкор, но меня это нисколько не парит :-)

[Удален]
#7

может сможете и мне помочь?

у меня возникла следующая проблема, проставили внешую ссылку с пробелом (исправить нет возможности), таким образом ссылка приобрела вид www.site.ru/dir.html%20 При переходе по такой ссылке сайт выдает 404 ошибку.

Задача с помощью редиректа, перекидывать с этой страницы на нормальную.

Обычные способы редиректа не помогли.

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

enton, попробуйте такой вариант

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

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
[Удален]
#9

спасибо, помогло!

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