Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.10.2014, 23:28
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

htaccess 301й редирект и регулярка
Помогите, пожалуйста, не понимаю я синтаксиса htaccess'a...
Нужно перевести магазин с юкоза на опенкарт. Соответственно, ссылки поменяются с такого вида:
http://www.site.net/shop/2331/desc/a...skaja-albicija
на такой
http://site.net/akacija-lenkoranskaja-albicija.html
Написал так
Код:
RewriteRule ^shop/\d.*/desc/(.*)$ $1.html [R=301,L]
но не работает. Так тоже
Код:
RewriteRule ^shop\/\d.*\/desc\/(.*)$ $1.html [R=301,L]
Поправьте, где я не прав, плиз.
Вот весь код за вычитом комментариев:
Код:
AddDefaultCharset UTF-8
Options +FollowSymlinks
Options -Indexes
<FilesMatch "\.(tpl|ini|log)">
 Order deny,allow
 Deny from all
</FilesMatch>

RewriteEngine On

RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteRule ^download/(.*) /index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

RewriteRule ^shop\/\d.*\/desc\/(.*)$ $1.html [R=301,L]
Ответить с цитированием
  #2 (permalink)  
Старый 23.10.2014, 23:43
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Может звездочка первая жадная? Там в регулярке точно точка не лишняя?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 23.10.2014, 23:49
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от danik.js
Может звездочка первая жадная?
ну, без нее тоже не работает
Код:
RewriteRule ^\/desc\/(.*)$ http://site.net/$1 [L]
Тыкаю подряд найденные примеры в интернете, как слепой котенок, потому что тратить время на изучение вопроса, который возможно больше в жизни не понадобится, не хочется...
Ответить с цитированием
  #4 (permalink)  
Старый 23.10.2014, 23:57
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от BETEPAH
ну, без нее тоже не работает
Ну дык я не говорил что ее убрать нужно ))

^shop\/\d*\/desc\/(.*)$ - разве не так должно быть?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 24.10.2014, 00:02
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от danik.js
Ну дык я не говорил что ее убрать нужно
я понял, что имелось в виду. Но даже выкинув спорную часть, все равно не проходит.
И так тоже не редиректит
Код:
RewriteRule ^shop\/\d*\/desc\/(.*)$ http://site.net/$1 [L]

Последний раз редактировалось BETEPAH, 24.10.2014 в 10:22.
Ответить с цитированием
  #6 (permalink)  
Старый 24.10.2014, 04:14
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от terminator-101
 
Регистрация: 14.10.2014
Сообщений: 117

Сообщение от danik.js
Может звездочка первая жадная?
Звездочка по определению жадная
Сообщение от danik.js
Там в регулярке точно точка не лишняя?
Точка там не лишняя, без точки это будет означать вообще чушь, хотя само подвыражение по хорошему, надо было бы записать \d+, потому что под его шаблон подпадает 2331/desc, 1jjjroror/desc, 1*:?),./desk, 1/desk и тп. Но дело все равно не в этом. Регулярка хоть и запредельно глупая, она все равно матчит нужные адреса
s="http://www.site.net/shop/2331/desc/akacija-lenkoranskaja-albicija"
re=/shop\/\d.*\/desc\/(.*)/
console.log(s.match(re))
//  [ 'shop/2331/desc/akacija-lenkoranskaja-albicija',
//    'akacija-lenkoranskaja-albicija',
//    index: 20,
//    input: 'http://www.site.net/shop/2331/desc/akacija-lenkoranskaja-albicija' ]
//

Дело в чем-то другом.

ЗЫ Помочь ничем не могу, синтаксис этого диалекта, и саму хрень не знаю.

Последний раз редактировалось terminator-101, 24.10.2014 в 04:19.
Ответить с цитированием
  #7 (permalink)  
Старый 24.10.2014, 06:02
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,586

http://htaccess.madewithlove.be/
Работает. Косяк где-то ещё.
Может хостинг чудить.
__________________
29375, 35

Последний раз редактировалось Aetae, 24.10.2014 в 06:04.
Ответить с цитированием
  #8 (permalink)  
Старый 24.10.2014, 06:23
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Может дело в www? Попробуй без www запросить адрес.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 24.10.2014, 10:36
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Записал эту строку выше
Код:
RewriteRule ^shop\/\d*\/desc\/(.*)$ /$1.html [L]
RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteRule ^download/(.*) /index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
и заработало. Загадка для меня. Буду благодарен, если кто-то объяснит
Всем спасибо!
Ответить с цитированием
  #10 (permalink)  
Старый 24.10.2014, 16:30
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от BETEPAH
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
Это правило просто срабатывало раньше.
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите сделать редирект js ( или исправить) min Общие вопросы Javascript 4 17.04.2013 17:30
jquery анимация и редирект после SunYang Events/DOM/Window 5 17.05.2012 12:10
Input - получить текст и сделать редирект hell100 Общие вопросы Javascript 9 28.02.2012 20:06
Внутренний редирект с помощью PHP mister_maxim Серверные языки и технологии 2 30.03.2011 18:10
30(1|2) редирект от сервера. Или как лучше сделать редирект при верной отсылке форма. pizzZ AJAX и COMET 2 18.02.2010 09:06