Как реврайтом "вырезать" директории?

Статус
В этой теме нельзя размещать новые ответы.

parempi

Спецкор
Регистрация
10 Окт 2006
Сообщения
153
Реакции
252
Как правильно преобразовать все url на сайте такого вида:

***/1/2/***

в такие:
***/***

?

То есть, нужно вырезать две "лишние" директории, во всех ссылках:
site.com/1/2/a.php реврайтится в site.com/a.php
site.com/1/2/3/b.php в site.com/3/b.php

и т.д.
 
Не сильно конечно разбираюсь в mod_rewrite
Уверен, что есть способ и получше, вот такой .htaccess получился

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !\.(php)$
RewriteRule ^([^/]+)/([^/]+)/(.*).php$ /$3.php
 
Как правильно преобразовать все url на сайте такого вида:

***/1/2/***

в такие:
***/***

?

То есть, нужно вырезать две "лишние" директории, во всех ссылках:
site.com/1/2/a.php реврайтится в site.com/a.php
site.com/1/2/3/b.php в site.com/3/b.php

и т.д.
:ay:Должно работать.
Код:
RewriteRule ^(.*)/(.*)/(.*).php(/?)+$ $3.php [L]
RewriteRule ^(.*)/(.*)/(.*)/(.*).php(/?)+$ $3/$4.php [L]
 
Спасибо, но оба варианта не работают ((
Первый дает 500 ошибку Internal Server Error


Ну и мне нужно не только с расширением .php реврайтить.
Правило должно быть универсальным для всех случаев

HTML:
преобразовать
***/dir-a/dir-b/***

в:
***/***
Возможно такое? :)
 
Спасибо, но оба варианта не работают ((
Первый дает 500 ошибку Internal Server Error

Тестил у себя все было ок. Не работает скорее всего из-за того, что не установлен модуль mod_rewrite
 
Спасибо, но оба варианта не работают ((
Первый дает 500 ошибку Internal Server Error


Ну и мне нужно не только с расширением .php реврайтить.
Правило должно быть универсальным для всех случаев

HTML:
преобразовать
***/dir-a/dir-b/***

в:
***/***
Возможно такое? :)
Код:
RewriteEngine On
RewriteBase /
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/$ /$1/$ [L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)$ /$1/$4 [L]
;)
 
Я наверно задачу неправильно формулирую, и предложенные варианты поэтому не годятся. Попробую так сформулировать:

Точное название директорий -

abc/def/

Url может быть такой:
site.com/abc/def/111.php,

такой:
site.com/abc/def/222.html,

такой:
site.com/abc/def/all.aspx?y=2008

и т.п.

Всегда
/abc/def/ (и только они!) должны заменяться на / , то есть чтобы на выходе получилось так:
site.com/111.php,
site.com/222.html,
site.com/all.aspx?y=2008

и т.п.

Подскажите, как сделать оптимально? :)
 
при запросе на сайте страницы site.com/111.php будет отдаватся страница site.com/abc/def/111.php

так???

Код:
RewriteEngine On
RewriteRule ^(.*)$ /abc/def/$1 [L]
 
при запросе на сайте страницы site.com/111.php будет отдаватся страница site.com/abc/def/111.php

так???

Да, должно быть так, но почему-то ни один из предложенных вариантов не работает (((

 
эта тема не стоит оплаты :) все достаточно просто.
Начните с проверки:
1. А включен/разрешен ли mod_rewrite?
Для просмотра ссылки Войди или Зарегистрируйся
2. А разрешено ли в httpd.conf использовать rewriteEngine в .htaccess ?
Для просмотра ссылки Войди или Зарегистрируйся

П.С. Второе встречается ОчеНь часто!
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху