ЧПУ

peretc001

Новичок
Добрый день

в htaccess настроено чпу
Код:
RewriteRule ^car/(.*)/(.*)/$  /car/page.php?brand=$1&url=$2 [NC,L]
при переходе по адресу /car/BMW/320d/ все работает корректно
но при этом адрес /car/page.php?brand=BMW&url=320d тоже работает, почему? он же должен перенаправлять на /car/BMW/320d/

и второй вопрос: на этой же странице есть форма
url текущей страницы записывается: <input type="hidden" name="back_url" value="<?php echo $_SERVER['REQUEST_URI']; ?>"/> (т/е/ там адрес /car/BMW/320d/)

и при ее заполнении происходит редирект
Код:
<script language="JavaScript">
 setTimeout(function() {
     window.location.href = "/'. $_POST['back_url'] .'/";
     },1500);
</script>
но возврат получается не на /car/BMW/320d/ а на /car/page.php?brand=BMW&url=320d

нем могу понять почему
 

Фанат

oncle terrible
Команда форума

peretc001

Новичок
в том то и дело что нигде не написано, а по хорошему нужно старый адрес закрыть, переадресовывать на новый, чтоб в поиске не дублировался
а обратный редирект начал работать как надо, видимо закешировался чуток :)
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
те /car/BMW/320d/ перенаправляет на /car/page.php?brand=BMW&url=320d
а /car/page.php?brand=BMW&url=320d на /car/BMW/320d/
 

peretc001

Новичок
нет, они друг на друга не перенаправляют

можно зайти и /car/BMW/320d/ и /car/page.php?brand=BMW&url=320d
и обе отображаются корректно и одно и тоже, я пытаюсь сделать перевод с /car/page.php?brand=BMW&url=320d на /car/BMW/320d/

может я не правильно делаю ЧПУ
Код:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
# ЧПУ
# Каталог car
RewriteRule ^car/(.*)/(.*)/$  /car/page.php?brand=$1&url=$2 [NC,L]
 

WMix

герр M:)ller
Партнер клуба
можно зайти и /car/BMW/320d/ и /car/page.php?brand=BMW&url=320d
можно зайти на /car/BMW/320d/
Код:
RewriteRule ^car/(.*)/(.*)/$  /car/page.php?brand=$1&url=$2 [NC,L]
(но вызвано будет /car/page.php?brand=BMW&url=320d)

я пытаюсь сделать перевод с /car/page.php?brand=BMW&url=320d на /car/BMW/320d/
те /car/BMW/320d/ перенаправляет на /car/page.php?brand=BMW&url=320d
а /car/page.php?brand=BMW&url=320d на /car/BMW/320d/
 

peretc001

Новичок
я так понимаю в этом и есть смысл чпу, показывает одно а вызывает другое
я просто не могу понять как сделать чтоб нельзя было напрямую зайти по адресу /car/page.php?brand=BMW&url=320d
чтоб даже если его вбить он или выдавал ошибку 404 или направлял на /car/BMW/320d/

или все кто использует чпу на сайтах у всех дублируются страницы
 

peretc001

Новичок
вы меня натолкнули на мысль и сделал редирект со старых адресов на новые
Код:
RewriteCond %{QUERY_STRING} ^brand=(.*)&url=(.*)$
RewriteRule ^car/page\.php$ /car/$1/$2/? [R=301,L]
только не пойму как сделать чтоб вместо /$1/$2/ подставлялись get параметры (/BMW/320d/)
 

WMix

герр M:)ller
Партнер клуба
да че уж сразу в /car/page.php пиши
PHP:
header('Location: /car/'.$_GET['brand'].'/'.$_GET['url'].'/')
 

peretc001

Новичок
тьфу блин
сделал
Код:
RewriteRule ^car/page\.php$ /car/%1/%2/? [R=301,L]
тепере переадресовывает но страницы вида /car/BMW/320d/ не работают

если писать header('Location: /car/'.$_GET['brand'].'/'.$_GET['url'].'/') тоже не работает, видимо бесконечная переадресация

т/е/ придется оставлять дубли, просто в robots.txt запрещать индексирование /car/page.php?...
 

peretc001

Новичок
можно еще вопрос по другой теме:
при редактировании страницы не сразу отображается изменение на сайте
могу за минуту, например 5 раз изменить файл - 4 раза изменения видны сразу, а 5 раз только через минуту или 2

cache браузера отключен
файл открыть прям с сервера через ftp client FileZilla
хостин reg.ru
если править напрямую через панель управления хостингом такая же фигня

может есть какой-то кэш сервера?
 

WMix

герр M:)ller
Партнер клуба
подумай, может падает на 5й раз (error), а браузер всеже кеширует и отдает на http 5xx ответ из cahe?
 

AnrDaemon

Продвинутый новичок
я так понимаю в этом и есть смысл чпу, показывает одно а вызывает другое
я просто не могу понять как сделать чтоб нельзя было напрямую зайти по адресу /car/page.php?brand=BMW&url=320d
чтоб даже если его вбить он или выдавал ошибку 404 или направлял на /car/BMW/320d/

или все кто использует чпу на сайтах у всех дублируются страницы
Для этого надо НЕ использовать mod_rewrite.
 
Сверху