Помогите настроить .htaccess из подпапки.

А если так:
Код:
RewriteEngine On
RewriteBase /shop/

RewriteCond %{HTTP_HOST} www\.site\.com
RewriteRule (.*) http://site.com/$1 [R=301,L]
Или так:
Код:
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} www\.site\.com
RewriteRule (.*) http://site.com/shop/$1 [R=301,L]
Одним гемором меньше, теперь надо научить его отказываться от index.php
Сейчас стоит конструкция
Код:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.com/[R=301,L]
Не пашет. Как из корня, так и из подпапки. А такие мусорные URL ничего хорошего точно не дадут.
 
Одним гемором меньше, теперь надо научить его отказываться от index.php
Сейчас стоит конструкция
Код:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.com/[R=301,L]
Не пашет. Как из корня, так и из подпапки. А такие мусорные URL ничего хорошего точно не дадут.
Попробуйте так:
Код:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ .*/index\.php\ HTTP
RewriteRule (.*)index\.php$ /$1 [R=301,L]
 
Попробуйте так:
Код:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ .*/index\.php\ HTTP
RewriteRule (.*)index\.php$ /$1 [R=301,L]
Немного допилил, добавил /shop. Без него пуляло на морду. А так заработало.
Код:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ .*/index\.php\ HTTP
RewriteRule (.*)index\.php$ /shop/$1 [R=301,L]
Слушай, а в чём принципиальная разница моего первого варианта и твоего? Ведь разница в прочтении второй инструкции. Если я правильно понимаю, то ^index\.php$ Для просмотра ссылки Войди или Зарегистрируйся читается как, всё, что начинается с index.php привести к виду Для просмотра ссылки Войди или Зарегистрируйся. В твоём варианте, всё, что (от начала и до конца) содержит index.php привести к виду до /
 
Немного допилил, добавил /shop. Без него пуляло на морду. А так заработало.
Код:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ .*/index\.php\ HTTP
RewriteRule (.*)index\.php$ /shop/$1 [R=301,L]
Слушай, а в чём принципиальная разница моего первого варианта и твоего? Ведь разница в прочтении второй инструкции. Если я правильно понимаю, то ^index\.php$ Для просмотра ссылки Войди или Зарегистрируйся читается как, всё, что начинается с index.php привести к виду Для просмотра ссылки Войди или Зарегистрируйся. В твоём варианте, всё, что (от начала и до конца) содержит index.php привести к виду до /
Принципиальная разница в Cond и в этом .*/index\.php. Попробуй заменить
Код:
RewriteRule (.*)index\.php$ /shop/$1 [R=301,L]
на
Код:
RewriteRule index\.php /shop/ [R=301,L]
и всё должно сохранить работоспособность. Поменяй конд и всё может сломаться...
В руле перед index.php я ставлю .* что б убирало не только корневой site.com/index.php но и site.com/some_url/index.php редиректило...
 
Принципиальная разница в Cond и в этом .*/index\.php. Попробуй заменить
Код:
RewriteRule (.*)index\.php$ /shop/$1 [R=301,L]
на
Код:
RewriteRule index\.php /shop/ [R=301,L]
и всё должно сохранить работоспособность. Поменяй конд и всё может сломаться...
В руле перед index.php я ставлю .* что б убирало не только корневой site.com/index.php но и site.com/some_url/index.php редиректило...
Теперь допёр.
Крайний момент, надо снять все "/" в конце урлов.
Конструкция вида выпиливает всё ненужное, кроме site.com/shop/. Если снять с него "/" он добавляется автоматом.
Код:
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
 
  • Нравится
Реакции: UJy
Назад
Сверху