Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Манипулирование урлами в .htaccess
 
 автор: sergmust   (03.03.2008 в 21:57)   письмо автору
 
 

Есть сайт www.site.ru

в корне директория subdir, в ней например страница page1.php

Как оргнанизовать при помощи .htaccess и php такую штуку:

Чтобы при обращении к реальной странице www.site1.ru/subdir/page1.php в строке браузера было www.site1.ru/page1.php

и при ссылке с этой страницы на другую, находящуюся в стойже директории виден был урл www.site1.ru/page2.php

То есть, реально ли убрать весь сайт в поддиректорию, но чтобы она нигде для посетителя не фигурировала?

Помогите, плиз!

   
 
 автор: Agronom   (04.03.2008 в 20:33)   письмо автору
 
   для: sergmust   (03.03.2008 в 21:57)
 

man mod_rewrite

   
 
 автор: Sergmust   (04.03.2008 в 21:16)   письмо автору
 
   для: Agronom   (04.03.2008 в 20:33)
 

Спасибо за дельный совет. Но у меня не получается. Видно мало каши ел.

   
 
 автор: Agronom   (04.03.2008 в 22:54)   письмо автору
 
   для: Sergmust   (04.03.2008 в 21:16)
 

на сервере, который вы используете стоит этот мод?

   
 
 автор: Sergmust   (05.03.2008 в 18:46)   письмо автору
 
   для: Agronom   (04.03.2008 в 22:54)
 

Да, стоит.

Пытаюсь сделать что-то вроде

RewriteRule ^http://www.site.ru/$ http://www.site.ru/dir/$1


Получается ерунда всякая. Нужно, чтобы если после названия сайта в строке не присутствует поддиректория dir оно загружало страницу вставив ее в адресную строку после названия сайта, а в браузере так и было видно что в адресе ее нет. Моей квалификации маловато...

   
 
 автор: Agronom   (05.03.2008 в 18:57)   письмо автору
 
   для: Sergmust   (05.03.2008 в 18:46)
 

RewriteEngine On
RewriteRule ^http://www.site.ru/(.*?).php$ http://www.site.ru/dir/$1.php

   
 
 автор: Sergmust   (05.03.2008 в 19:16)   письмо автору
 
   для: Agronom   (05.03.2008 в 18:57)
 

Это понятно, но как написать чтобы направляло только адреса в которых не присутствует site.ru/dir/ ?

   
 
 автор: Agronom   (05.03.2008 в 19:33)   письмо автору
 
   для: Sergmust   (05.03.2008 в 19:16)
 

RewriteRule ^http://www.site.ru/(.^dir?).php$ http://www.site.ru/dir/$1.php

   
 
 автор: Sergmust   (05.03.2008 в 20:54)   письмо автору
 
   для: Agronom   (05.03.2008 в 19:33)
 

Не работает

   
 
 автор: Agronom   (05.03.2008 в 23:00)   письмо автору
 
   для: Sergmust   (05.03.2008 в 20:54)
 

да, я чушь написал... интересный у вас вариант, вот что-то никак не придуаю как исключить целое слово, при этом не исключая любые его буквы и исключая только в определенном положении.

Думаю тут нужно идти другим путем.

RewriteRule ^site/dir/(.+)? site/dir/$1 [L]
RewriteRule ^site/(.+)? site/dir/$1

   
 
 автор: Sergmust   (06.03.2008 в 14:58)   письмо автору
 
   для: Agronom   (05.03.2008 в 23:00)
 

Интересны, а то!

Вот и маюсь ;-)

Но это тоже не подходит.

Нужно чтобы перенаправление делалось только в случае, если в определенном месте строки НЕ стоит определенная подстрока (в данном случае директория)

Вот замутил...

   
 
 автор: Agronom   (06.03.2008 в 16:10)   письмо автору
 
   для: Sergmust   (06.03.2008 в 14:58)
 

ну а чем вам не подходит? в данном случает ищется строка с присутствием директории dir, и перенаправляет на тотже адрес - посути ничего не меняется. Знак [L] говорит о том чтобы прекратить выполнение дальнейших преобразований при успешном преобразовании предстоящего.

ну если у нас оно не выполнилось, т.е. в строке нет dir, то перенаправляем на строку с dir

так будет точнее, в прошлом я немного напортичил


RewriteRule ^site/dir/(.+)$ site/dir/$1 [L]
RewriteRule ^site/(.+)$ site/dir/$1

   
 
 автор: Sergmust   (06.03.2008 в 18:01)   письмо автору
 
   для: Agronom   (06.03.2008 в 16:10)
 

ВАУ!

Вот чего мне не хватало - [L] !!!!


Спасибо тебе большое за помощь!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования