Форум русскоязычного сообщества Ubuntu


Автор Тема: динамические ссылки или как настроить mod_rewrite  (Прочитано 3530 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн borodadada

  • Автор темы
  • Любитель
  • *
  • Сообщений: 75
  • Ну чё Боярский?
    • Просмотр профиля
ребята, подскажите как сделать так, что при переходе по ссылка из index.php который находиться в корне сайта, в папку к примеру /upload/upload.php ссылка в браузере была не www.******.ru/upload/upload.php А что то типа  www.******.ru/index.php?*****  
Я как понял это делается модулем апач mod_rewrite, он подменяет перенаправляет и тд.
Но у меня не получилось сделать так.
Сдела файл в корне .htaccess  в нём

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Что то неработает?
Может кто знает?
« Последнее редактирование: 03 Марта 2010, 03:06:12 от borodadada »

Oni-chan

  • Гость
sudo a2enmod rewrite
потом перезапуск апача
Делал?

Оффлайн borodadada

  • Автор темы
  • Любитель
  • *
  • Сообщений: 75
  • Ну чё Боярский?
    • Просмотр профиля
root@server:~# sudo a2enmod rewrite
Module rewrite already enabled

Вроде бы запущен, ещё какие то настройки надо было делать в ссылках апача на сайт,  всё сделал как надо

        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        allow from all

или может адесация какая то не так в ссылках. Пример корень\index.php ссылочка на \корень\upload\upload.php
прохожу по ссылочке В браузере всё как обычно.
Ни чего не понимаю.  :-[


Уже и в httpd.conf добавил там условие или или. Всё точно так же не ФуНцИкЛирУет
« Последнее редактирование: 03 Марта 2010, 00:31:45 от borodadada »

Oni-chan

  • Гость
бррр.
www.******.ru/upload/upload.php А что то типа  www.******.ru/index.php?*****   
Этого я не понял, причём только mod_rewrite и get-параметры?

Оффлайн borodadada

  • Автор темы
  • Любитель
  • *
  • Сообщений: 75
  • Ну чё Боярский?
    • Просмотр профиля
:) ? а разве так нельзя  ?
Хотел сделать так что бы при просмотре сайта, в браузере небыло видно папок в которых находятся php странички
Маскировка.


Оффлайн borodadada

  • Автор темы
  • Любитель
  • *
  • Сообщений: 75
  • Ну чё Боярский?
    • Просмотр профиля
тоесть как я понимаю вид этой строки RewriteRule ^(.*)\.php index.php?pagename=$1&%{QUERY_STRING}
Любой файл с расширением пхп, не важно где находится в пределах сайта будет преорбразован в вид index.php?pagename=
У меня так и не заработало.
Тоесть изначальный вид был
RewriteRule ^(.*)\.php b.php?pagename=$1&%{QUERY_STRING}
Вставил непосмотрел. Браузер зашумел p.php нету, ну тут я определил что в принципе то работает модуль.
ой.... вопрос пока что не решён. В принципе задача то не сложная. Подмена вида.......

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Ребят, не тупите так сильно...
Вернуть серверу параметры GET запроса - проще нет задачи, выставляешь флаг QSA (QueryStringAppend) и дело в шляпе.
А по поводу работы самих правил перезаписи - включаешь RewriteLog, настраиваешь RewriteLogLevel и уже там читаешь, что и как у тебя преобразуется, и где чего надо поменять.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн borodadada

  • Автор темы
  • Любитель
  • *
  • Сообщений: 75
  • Ну чё Боярский?
    • Просмотр профиля
немогли бы вы привести пример.
В интернете нашёл пример
# domain.com/articles/title/5/ из domaim.com/articles.php?name=title&page=5
RewriteRule ^articles([A-Za-z0-9-]+)/([0-9]+)/?$ article.php?name=$1&page=$2 [L]
Только мне надо наоборот
Меняю местани не работает.
Автор: AnrDaemon рекомендует выставлять флаг QSA
 

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Приведи конкретный пример запроса (URL) и желаемый результат трансформации.

Дааа, и не забудь указать, напуркуа оно тебе надо.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн borodadada

  • Автор темы
  • Любитель
  • *
  • Сообщений: 75
  • Ну чё Боярский?
    • Просмотр профиля
из www.site.ru/upload/upload.php  в   www.site.ru/index.php=upload ну или как ни будь подобно Нлавное что бы папки не светились.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
<IfModule rewrite_module>
    RewriteEngine On

    RewriteCond %{HTTP_HOST} !^www\.site\.ru [NC]
    RewriteRule ^(.*)$ "http://www.site.ru/$1" [QSA,R=301,L]

    RewriteCond %{HTTP_HOST} ^www\.site\.ru [NC]
    RewriteRule ^index\.php$ "http://www.site.ru/" [QSA,R=301,L]

    RewriteCond %{HTTP_HOST} ^www\.site\.ru [NC]
    RewriteRule ^(.+)\.php$ "http://www.site.ru/?module=$1" [QSA,R=301,L]
</IfModule>

В _GET['module'] будет запрошенный путь без расширения ".php".
Но как ты заставишь это работать на сервере - твои личный проблемы.

И еще такой момент - все последние рекомендации по сайтостроению настаивают на строго обратном построении адресации страниц - без использования GET запросов.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн borodadada

  • Автор темы
  • Любитель
  • *
  • Сообщений: 75
  • Ну чё Боярский?
    • Просмотр профиля
Вообщем при такой записи
Это распространяеться только на те ссылки каторые находятся в корне сайта
В браузере ссылка преобразовываеться в вид  http://www.site.ru/?module=whois
Где whois.php это страничка  в корне.
Но на саму страничку так и не переходит.
Тоесть остаёться первая страница и в поле урл новый урл.

мммм .... док прочитал, не официальный на блоге.
Там пример приводился использования mod_rewrite для упрощения ссылки. Что бы индексировали поисковые системы и тд и тп . Ну тоесть такая уже ювелирная работа.
А что бы так глобально , изменение пути ... пока что так и не встречал.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Я же сказал:
Но как ты заставишь это работать на сервере - твои личные проблемы.
Я тебе переписал URL, чтобы не светились подкаталоги? Переписал.
Либо пиши нормально, что тебе надо, либо не высасывай проблемы из пальца.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн borodadada

  • Автор темы
  • Любитель
  • *
  • Сообщений: 75
  • Ну чё Боярский?
    • Просмотр профиля
ты конечно извини
видимо сам незнаеш можно ли это сделать. Я непонимаю, просто того что если ты не знаеш зачем пишеш.
Я если незнаю то не пишу. Для начала нужно определиться возможен ли такой принцип работы.
Если он возможен то углубиться в нужном направлении. К пример я знаю точно, что сложные урл можно преобразовать в более простой вид. Как раз с помощью ревроайта.
Тем более ты в ранем посте писал, мол ребята не тупите всё просто..... Я что то уверен что ни черта тут не просто.
И вробще что за манера писать большими буквами, текст который ни имеет ни кого отношения к решению этой проблемы.
Цитирую тебя - Либо пиши нормально, что тебе надо 
Хочу добавить что как я могу написать нормально , если вся проблема выше описаная заключается именно в этом.
И ещё При написании какого либо кода обще принято его пояснять Так как не все пользователи обладают чтением кода. Кому то приходться паралельно лезти в справочник и искать... если что то делать, то делать по человеческий.
« Последнее редактирование: 03 Марта 2010, 22:17:02 от borodadada »

 

Страница сгенерирована за 0.041 секунд. Запросов: 23.