Показать полную графическую версию : mod_rewrite etc.
Страниц :
1
[
2]
3
4
5
6
7
8
9
10
Prisoner
14-09-2005, 11:29
угу, а еще сконфигурировать правила и опции в .htaccess, что в корне сайта будет.
К примеру
RewriteEngine on
RewriteRule ^news[\/]{0,1}$ /index.php?page=news&nid=0
RewriteRule ^news/([0-9]+)[\/]{0,1}$ /index.php?page=news&nid=$1
RewriteRule ^news/archive[\/]{0,1}$ /index.php?page=news/archive&nid=0
RewriteRule ^news/archive/([0-9]+)[\/]{0,1}$ /index.php?page=news/archive&nid=$1
RewriteRule ^mail[\/]{0,1}$ /index.php?page=mail&cid=0&oid=0&did=0
RewriteRule ^mail/([0-9]*)[\/]{0,1}$ /index.php?page=mail&cid=$1&oid=0&did=0
RewriteRule ^mail/([0-9]*)/([0-9]*)[\/]{0,1}$ /index.php?page=mail&cid=$1&oid=$2&did=0
RewriteRule ^mail/([0-9]*)/([0-9]*)/([0-9]*)[\/]{0,1}$ /index.php?page=mail&cid=$1&oid=$2&did=$3
RewriteRule ^([a-zA-Z0-9_\/\$]*)[\/]{0,1}$ /index.php?page=$1&%{QUERY_STRING}
Да все я это сконфигурировал и htaccess правильный. На удаленном хостинге работает. А на моем win32 домашнем - Нет. Апач 1.3.23. Ошибка 404 нет такой страницы ;(
benya можно попробовать писать полные пути а не относительные
Нет я уже разобрался. htacess то по умолчанию выключен. Вот и вся проблема. Работает.
Подскажите как сделать чтобы вот так было: есть файлы в корне сайта типа about.php, contact.php, index.php и т.п. и их можно было-бы вызывать например вот так: http://www.site.com/about или например, http://www.site.com/index.php?about.
Если можно, приведите пожалуйста полный листинг того, что надо добавить в .htaccess. Заранее благодарен.
Prisoner
10-02-2006, 18:19
RewriteEngine on
RewriteRule ^about[\/]{0,1}$ /index.php?about
Как вариант. Второй вид вызова (через index.php) не будет обработан условиями мода и потому тоже сработает на показ странички about.
Prisoner
Не получается, ошибка 403.
Какая интересная тема! Я ее обязательно прочитаю целиком, если вы скажете можно ли сделать следующую вещь. Есть поддомен unattended.oszone.net (некоторые о нем даже знают ;-), но все материалы уже давно переехали и главная страница находится тут http://oszone.net/display.php?id=2747
Когда осуществлялся переезд я где-то вычитал про htaccess (o котором вообще понятия не имел) и сделал RedirectMatch seeother ^/(.+)$ http://oszone.net/display.php?id=2747чтобы все запросы на страницы поддомена перебрасывались на новую главную страницу. Это все работает, и при запросе unattended.oszone.net все попадают куда надо. А можно ли сделать так, чтоб в адресной строке после этого отображалось не http://oszone.net/display.php?id=2747 а http://unattended.oszone.net
Спасибо за внимание!
Prisoner
01-03-2006, 16:20
Это внешний редирект используется. Можно попробовать (для относительных ссылок на unattended.oszone.net) применить правило для внутреннего редиректа чего бы то ни было на oszone.net. Тогда часть .htaccess ответственная за это дело примет вид:
RewriteEngine on
RewriteCond %{SERVER_NAME} ^unattended.oszone.net$
RewriteRule ^(.+)[\/]{0,1}$ http://oszone.net/$1?%{QUERY_STRING}
Пример бы имел практический смысл, если бы не делал тоже самое, что выше - не менял адрес в адресной строке. Но, насколько я понял без внешнего редиректа (когда сервер в силу каких-то причин отправляет броузеру заголовочную информацию о смене адреса) с домена на домен не обойтись. Прошу коллег поправить меня, если я ввожу в заблуждение уважаемого модератора.
Prisoner
Спасибо за ответ. Возможно, я не совсем подробно об'яснил, а еще не исключено, что я выбрал совсем не ту тему для вопроса. Попробую пояснить в меру моих весьма скромных знаний в данной области. Когда поддомен был создан, я получил данные для соединения по FTP: IP, username/pass. После установки соединения я попадал в каталог с
cgi-bin\
html\
logs\
В html все мои файлы и лежали. Туда же в итоге я кинул свой htaccess. Мне никто толком даже об'яснить не мог как нормально редирект сделать :) Так что я нарыл что-то в гугле...
Теперь все, что я хочу сделать - это отображать другой адрес в адресной строке. Т.е. не адрес страницы, отдаваемой движком сервера, а поддоменное имя. Возможно ли такое вообще? Может надо действовать иными методами и mod_rewrite тут вообще не причем?
vadimiron
02-03-2006, 10:30
Vadikan
А доступ к конфигу Apache есть?? Тогда можно сделать виртуальный хост
vadimiron
Есть. А что надо сделать конкретно?
VadikanRewriteEngine on
RewriteRule ^/(.+)$ http://oszone.net/display.php?id=2747 [P]
Флаг P делает подзапрос (скрытый для клиента) с помощью модуля mod_proxy. Если этого модуля нет, то не судьба...
Sham
Значит можно все-таки? :) Но я не вижу где указан домен, который должен отображаться: http://unattended.oszone.net/ mod_proxy. Если этого модуля нет, то не судьба...
Раз это модуль, то наверное его можно установить или подключить? Можно подробнее, я в этом не разбираюсь.
Vadikan
У тебя ж .htaccess в поддомене unattended? Значит на любой URL (на этот поддомен) в соотв. с регуляркой будет подзапрос на реальный сайт (второй URL), и первый URL в строке браузера останется (подзапрос то скрытый, браузер ни о чем не догадывается :)).
здесь также уточнил на случай ссылки вида unattended.oszone.net/display.php?* (флаг L чтобы правило не циклило):RewriteEngine on
#RewriteCond %{THE_REQUEST} display\.php
#RewriteRule ^(.+)$ http://oszone.net$1 [L,P]
RewriteRule .* http://oszone.net/display.php?id=2747 [L,P]
Без практической проверки тут не обойтись, т.к. mod_rewrite штука хитрая, и порой непредсказуемая, может зациклить :)
Насчет mod_proxy. Надо посмотреть в phpinfo() в loaded modules. Если нету там, то открой httpd.conf и раскоменть строку LoadModule proxy_module modules/mod_proxy.so (убери #).
Sham
Спасибо за развернутый ответ. Надо поэкспериментировать. Пока что после переезда на новый сервер перестало работать то, что было раньше RedirectMatch seeother ^/(.+)$ http://oszone.net/display.php?id=2747 :) Я даже толком не знаю что там происходит...
здесь также уточнил на случай ссылки вида unattended.oszone.net/display.php?* (флаг L чтобы правило не циклило):Вообще-то, таких ссылок нет. Возможно где-то сохранились в сети ссылки на старые страницы типа unattended.oszone.net/dir/page.html Такие надо бы все равно редиректить на главную страницу.
Vadikan
А поясни, пожалуйста, зачем у тебя в строке seeother? Вообще, маркеры (^$) не нужны там. И скобки тоже (подстановку то не делаем). Как говорится, будь проще... RedirectMatch .* http://oszone.net/display.php?id=2747
#Или то же самое с пом. mod_rewrite:
RewriteEngine on
RewriteRule .* http://oszone.net/display.php?id=2747 [L,R]Вообще-то, таких ссылок нет. Возможно где-то сохранились в сети ссылки на старые страницы типа unattended.oszone.net/dir/page.html Такие надо бы все равно редиректить на главную страницу. а, ну тогда только оставим 1 и 4 строку в коде (в моем предыдущем посте).
ShamА поясни, пожалуйста, зачем у тебя в строке seeother?
Вот, второй абзац (http://forum.oszone.net/post-412217-28.html) :idontnow:
У меня сейчас нет доступа никуда все равно, так что я могу только просить все это сделать... Спасибо за помощь.
Siava one
23-07-2006, 02:27
Привет всем :)
А как можно сделать с помощью rewrite_mod, чтобы вместо "битых" картинок в форуме отображалась какая-нибудь одна и та же.
Например кто-нибудь с помощью тега [img] выложил картинку, а через некоторое время картинки не стало физически.. чтобы не было пустого прямоугольника.
Vlad Drakula
23-07-2006, 10:15
Siava one
нужно настраивать скорее всего не rewrite_mod а то что отсылается в случае если файл не найден.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.