Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Модреврайт не работает на урлах, где встречается точка
цитата
29/08/17 в 11:54
 indelible[p]ink
Коллеги, столкнулся с проблемой: есть урлы вида

domain.ru/dir.name/subdir/index.htm

надо убрать index.htm и оставить урлы вида

domain.ru/dir.name/subdir/

Код:

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   RewriteEngine On

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

</IfModule>


корректно работает для урлов вида

domain.ru/dir.name/subdir/index.htm
domain.ru/dirname/index.htm

Но категорически не работает на категории domain.ru/dir.name/index.htm где в "dir.name" есть точка.

Куда копать, чего не хватает в правиле? Убрать точку нельзя, категория очень большая, в индексе тьма страниц.

Последний раз редактировалось: indelible[p]ink (29/08/17 в 12:49), всего редактировалось 1 раз
цитата
29/08/17 в 12:20
 S_Flash
1.
indelible[p]ink писал:
корректно работает для урлов вида

domain.ru/dir.name/subdir/index.htm
domain.ru/dirname/index.htm

Но категорически не работает на категории domain.ru/dir.name/subdir/index.htm где в "dir.name" есть точка.

Куда копать, чего не хватает в правиле? Убрать точку нельзя, категория очень большая, в индексе тьма страниц.


Пререпроверь код ещё раз ибо у тебя и в вопросе каша:
Цитата:
корректно работает для урлов вида domain.ru/dir.name/subdir/index.htm Но категорически не работает на категории domain.ru/dir.name/subdir/index.htm


2. Зачем использовать Module mod_rewrite.c, и тут же примерять код для .htaccess? Не проще тогда перенести всё в htaccess ? Я имею ввиду флаг [L], который не работает в данном контексте.

3. Что означает "категорически не работает"? Какая ошибка снаружи и в логах?

4. Пробовал точку экранировать?
RewriteRule ^(.*)index\.htm$
цитата
29/08/17 в 12:48
 indelible[p]ink
Снаружи с урла domain.ru/dir.name/subdir/index.htm перебрасывает на domain.ru// (именно так, с двумя слешами на конце).

Пробовал экранировать точку, пробовал городить конструкции с явным указанием dir.name. Всё равно шляпа с двумя слешами на выходе.

Где на Денвере искать нужные логи? Я сейчас на нём бьюсь :/

Стартпост поправил, спасибо smail54.gif
цитата
29/08/17 в 13:30
 S_Flash
А сам урл с точкой http://domain.ru/dir.name/subdir/ не редиректит на http://domain.ru// ?
цитата
29/08/17 в 13:38
 S_Flash
Опять же этот код взят для htaccess
В твоём варианте путь запроса в переменную $1 попадает с начальным слешем.
Перенеси
Код:
RewriteEngine On
RewriteRule ^(.*)index.htm$ http://test1.ru/$1 [R=301,L]

В в htaccess и всё может заработать.
цитата
29/08/17 в 13:50
 indelible[p]ink
smail54.gif спасибо!


Эта страница в полной версии