Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FAQ. Apache. mod_rewrite. Начни с простого. Было много вопросов. Написал статейку. 
:(
    Опции темы
AztEK
Дата 4.1.2007, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 1
Всего: 18



Почитал манула к апачу:
Цитата

When this directive is set to None, then .htaccess files are completely ignored. In this case, the server will not even attempt to read .htaccess files in the filesystem.

When this directive is set to All, then any directive which has the .htaccess Context is allowed in .htaccess files.

Все-таки там All должно быть (вот почему 404 вылезало, RewriteRule не работало).


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
Mal Hack
Дата 4.1.2007, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 15
Всего: 261



Цитата(AztEK @  4.1.2007,  20:13 Найти цитируемый пост)
Все-таки там All должно быть (вот почему 404 вылезало, RewriteRule не работало). 

Ну это само собой...
А вот откуда 400 вылезает....
PM ICQ   Вверх
AztEK
Дата 5.1.2007, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 1
Всего: 18



О! Кажется нашел решение! Апач у меня 1.3.24
Вот информация о релизе 1.3.26 - http://www.apacheweek.com/issues/02-06-21
Цитата

Fix for a problem in mod_rewrite which would lead to 400 Bad Request responses for rewriting rules which resulted in a local path. Note: This will also reject invalid requests as issued by Netscape-4.x Roaming Profiles (on a DAV-enabled server)


Сейчас попробую поставить свежий.

Добавлено @ 12:27 
Даааа! Дааа!!  smile Поставил 1.3.33 (2.x не люблю - глючный) - всё заработало smile

Совет всем - обновляйте апач и будет вам счастье  smile 


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
Mal Hack
Дата 5.1.2007, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 15
Всего: 261



Цитата(AztEK @  5.1.2007,  12:15 Найти цитируемый пост)
(2.x не люблю - глючный) -

Ну это ты зря, конечно.


Цитата(AztEK @  5.1.2007,  12:15 Найти цитируемый пост)
О! Кажется нашел решение! Апач у меня 1.3.24

Молоток.
PM ICQ   Вверх
neokortex
Дата 19.7.2007, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 19.3.2007

Репутация: нет
Всего: нет



вот тут все говорится о преобразовании адресов вида
http://www.site.ru/news.php?years=2007&amp...th=6&day=19
в
http://www.site.ru/news/2007/6/19
но есть cms которые позволяют давать свои имена адресам, например ссылку вида
http://www.site.ru/news/2007/6/19 можно переделать в
http://www.site.ru/news/2007god/june/day19

Как можно произвести такое? Это тоже делается при помощи mod_rewrite, но я так понимаю используется еще и отделный файл, при помощи которого это делается.

Я правильно понимаю?
 smile 

 smile 
PM MAIL   Вверх
Smorodin
Дата 17.9.2007, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрейший
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 10.4.2006
Где: Пермь

Репутация: нет
Всего: 1



Содержимое .htaccess
Код

RewriteEngine on

Options +FollowSymlinks

RewriteBase /

RewriteRule ^.htaccess$ - [F]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]


Содержимое index.php
Код

<?php 
$arr = explode( '/' , $_SERVER['REQUEST_URI'] );
// Разбиваем переменную $_SERVER['REQUEST_URI'] на массив элементов по символу '/'.
print $arr[1] . '<br>';
print $arr[2] . '<br>';
print $arr[3] . '<br>';
print $arr[4] . '<br>';
?>



Если вводить localhost/123 или что нибудь подобное - тогда 404.
Если localhost/index или localhost/index/123 - то все работает...

Добавлено через 47 секунд
В чем проблема?


--------------------
Сделать можно все, только вопрос - когда?
PM MAIL Skype   Вверх
BSOD
Дата 15.11.2007, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 1.11.2004
Где: Гомель

Репутация: нет
Всего: 3



Такая проблемма:
делаю так:

RewriteRule ^(bussiness[/\\])$ category.php?category=economia
(переправляю с /bussiness/ на category.php и дальше по тексту)
вот, но если зайти 
корень/category.php..., то все нормально, а если
/корень/bussiness/ то получается, что мы как будто в папке bussiness, а на страничке у меня есть много картинок, с относительными путями, понятно, что совсем не относительно bussiness, вот теперь мне нужно, что бы вобще все, что юзер пытается брать из bussiness, бралось из корня... пробовал по разному - никак не заработало :(
подскажите, что делать (корень - не обязательно сам домен, это может быть и просто папка...)



--------------------
как корабль назовешь - то на нем и напишешь
PM MAIL WWW ICQ   Вверх
BSOD
Дата 15.11.2007, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 1.11.2004
Где: Гомель

Репутация: нет
Всего: 3



Все, само дошло smile

RewriteRule ^(.*)bussiness/(.*)$ $2


--------------------
как корабль назовешь - то на нем и напишешь
PM MAIL WWW ICQ   Вверх
Mavrun
Дата 5.12.2007, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 25.11.2007

Репутация: нет
Всего: 13



Поможите плиз!
Код

RewriteEngine on
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+[^/])$ $1/ [QSA]

RewriteRule ^about[/](.*).php[/]$ ./index.php?task=about&id=$1 [QSA]


прописываю это в хтаксесе. на странице меняю урл на http://servername/about/1.php

когда загружаю в браузере и прохожу по новоиспечённой сссылке, то всё нормально. Но на той странице куда я попал вместо этой ссылки уже ссылка http://servername/about/about/1.php а если и там по ней счёлкаю, то уже попадаю на страницу http://servername/about/about/about/1.php

как с этим бороться?????




и ещё кстати проблема. когда я дописываю в хтаксесе ещё строчечку
Код
RewriteRule ^service[/](.*).php[/]$ ./index.php?task=service&id=$1 [QSA]

и на старнице ссылку переделываю на http://servername/service/1.php , то по ней проходить не получается, ошибка 404=(

Это сообщение отредактировал(а) Mavrun - 5.12.2007, 22:50
PM MAIL   Вверх
SnowZmiY
Дата 15.1.2008, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 14.1.2008

Репутация: нет
Всего: нет



Здраствуйсте
вместо предисловия - я пока еще полный чайник в написании правил но у меня возник такой вопрос:
Хостинг который я использую для подключения новых доменном использует поддомены Основного доменна как каталоги в которых быдет располагаться новый домен - в результате чего образуется ситуация когда - sitenew.siteold.ru и sitenew.ru - это одно и тоже хотя сайты совершенно разные и хотелось бы обращение к sitenew.siteold.ru запретить совсем, а оставить только sitenew.ru да вот только не пойму как это сделать. То есть если идет обращение к sitenew.siteold.ru чтобы сервер выдавал 
Код

Not Found
The requested URL /was not found on this server.


--------------------------------------------------------------------------------

Apache/1.3.34 Server at www.profparket.ru Port 80

или что то подобное
я понимаю что нужно использовать правило - RewriteCond %{HTTP_HOST} (www.)?sitenew.siteold.ru [nocase]
и сделать редирект на 404 ошибку но как и куда ?????
подскажите как это можно сделать
Заранее спасибо

Это сообщение отредактировал(а) SnowZmiY - 15.1.2008, 00:07
PM MAIL   Вверх
ymymaster
Дата 17.1.2008, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 12.12.2007

Репутация: нет
Всего: нет



как сделать, что при авторизации при нажатии кнопки отмена был редирект на произвольную страницу?
так, как это сделано на взоре.
спасибо.
PM MAIL   Вверх
karterfree
Дата 24.3.2008, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 24.3.2008

Репутация: нет
Всего: нет



Такой вопрос. Есть .htaccess с содержанием:

Код


DirectoryIndex index.php
Options -Indexes 

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^tiket index.php?modul=tiket
RewriteRule ^tiket/(.*)$ index.php?modul=tiket&page=$1

RewriteRule ^news index.php?modul=news
RewriteRule ^news/(.*)$ index.php?modul=news&page=$1

RewriteRule ^docs index.php?modul=docs
RewriteRule ^docs/(.*)$ index.php?modul=docs&page=$1

RewriteRule ^guide index.php?modul=guide
RewriteRule ^guide/(.*)$ index.php?modul=guide&page=$1

RewriteRule ^files index.php?modul=files
RewriteRule ^files/(.*)$ index.php?modul=files&page=$1

RewriteRule ^mypage index.php?modul=mypage
RewriteRule ^mypage/(.*)$ index.php?modul=mypage&page=$1

ErrorDocument 404 /index.php?modul=404
ErrorDocument 403 /index.php?modul=403



Такие правила были поставлены что бы ссылки
http://localost/tiket/ перенаправлялись на http://localost/index.php?modul=tiket

Но вот проблема: 
У меня появился дополнительный модуль http://localost/techspec/
Лежит по адресу http://localost/techspec/index.php
но когда я иду по адресу http://localost/techspec/ то попадаю на http://localost/index.php

Как дописать или переписать правила что бы 
http://localost/techspec/ перенаправлялся на http://localost/techspec/index.php (соответственно с сss и т.д.) 
а http://localost/tiket/,  http://localost/news/ и т.д. перенаправлялись на http://localost/index.php







PM MAIL   Вверх
SamDark
Дата 25.3.2008, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Комодератор
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: нет
Всего: 38



karterfree
Код

RewriteRule ^techspec/(.*)$ techspec/index.php?modul=techspec&page=$1



--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
daxdax
Дата 14.4.2008, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 14.4.2008

Репутация: нет
Всего: нет



Здраствуйте!

Добавлено @ 16:09
Здраствуйте!
У меня вот такой вопрос.
у меня есть 

ссылки таково типа
www.domen.ru/4.php?title=word1
www.domen.ru/4.php?brend=word2
www.domen.ru/4.php?goods=word3

RewriteRule ^(['_',a-z0-9]+)$ domain/4.php ?title=$1 [NC]
RewriteRule ^(['_',a-z0-9]+)$ domain/4.php ?brend=$1 [NC]
RewriteRule ^(['_',a-z0-9]+)$ domain/4.php ?goods=$1 [NC]
RewriteRule ^([a-z]+){1,2}/(['_',a-z0-9]+)$ domain/4.php ?lang=$&1title=$2 [NC]
RewriteRule ^([a-z]+){1,2}/((['_',a-z0-9]+)$ domain/4.php ?lang=$&brend=$2 [NC]
RewriteRule ^([a-z]+){1,2}/((['_',a-z0-9]+)$ domain/4.php ?lang=$&goods=$2 [NC]


все word уникальны, так проблема втом что не получаеться объяснить mod_rewrite что если нет title=$1 то пременить brend=$1.
Он мне проосто открывает domain/$1.php?title= 
еслибы title=$1 был фаило то былобы проще можно бвлобы через

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

а так незнаю чё делать, если сможете помочь мне решить мою проблему буду очень благодарен.




Это сообщение отредактировал(а) daxdax - 14.4.2008, 16:33
PM MAIL   Вверх
Insbrook
Дата 14.2.2009, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 14.2.2009

Репутация: нет
Всего: нет



Снова вернуть к вопросу о доменах третьего уровня. Если их требуется счетное количество - да, прописал в DNS и в путь. 
А что делать если у меня на сайте например для всех sitename.tld/user1 должна работать ссылка user1.sitename.tld ?  Как сделать это? Не лезть же из-за каждого в DNS?
PM MAIL   Вверх
Google
  Дата 21.7.2019, 00:55 (ссылка)  





  Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема »


 




[ Время генерации скрипта: 0.0752 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.