Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Администрирование dedicated серверов, VPS/VDS, shared хостингов, IaaS, PaaS.
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2016, 20:10   #1
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию RewriteRule - заменить часть адреса

Помогите заменить адрес site.ru/en/hello/abc на:
site.ru/?english&hello&abc

То есть слово en заменяется на english, остальное передаётся как есть, только слэши заменяются на "&" и в начале ставится "?"
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Старый 21.07.2016, 21:17   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

обычно делают наоборот, делая слешевые адреса, а вот эти все знаки в php исползуются, может вам просто очистить все правила RewriteRule, удалить их, и тогда сайт будет отображаться без слешей.
Alar вне форума Ответить с цитированием
Старый 21.07.2016, 23:22   #3
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

Немного не так. Да и вообще я задачу неправильно поставил.
Адрес должен сохраниться в том виде, в каком его набрал пользователь.
RewriteRule мне нужен без редиректа [R=301].

Есть несколько адресов, передающиеся через слэш, которые должны преобразовываться в GET-параметры, т.е.

site.ru/en -> site.ru/?english
site.ru/hello -> site.ru/?hello
site.ru/m -> site.ru/?abc
и т.д.

Проблема в том, что все эти параметры должны работать совместно, т.е.:
site.ru/en/m -> site.ru/?english&abc
site.ru/m/en/hello -> site.ru/?abc&english&hello

И даже так:
site.ru/en?bye -> site.ru/?english&bye

Как это сделать?
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Старый 22.07.2016, 00:28   #4
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

Никогда с подобным не сталкивался, но интересно, знаю там есть плюс, пример

Цитата:
Есть два каталога /home/net/storag1 и /home/net/storage2, в которых нужно искать запрашиваемые файлы:

RewriteCond /home/net/storage1/%{REQUEST_FILENAME} -f

RewriteRule (.+) /home/net/storage1/$1 [L]

RewriteCond /home/net/storage2/%{REQUEST_FILENAME} -f

RewriteRule (.+) /home/net/storage2/$1 [L]
другой пример для страниц генерирующихся на лету
Цитата:
Регенерация содержания на лету

Описание:

Здесь рассматривается действительно вещь для посвященных: Динамически созданные однако статически обслуживаемые страницы, т.е. страницы которые должны передаваться как чисто статические (считываемые из файловой системы и затем передаваемые по запросу), однако они должны быть динамически сгенерированны веб-сервером если они отсутствуют в файловой системе. Таким образом вы можете иметь страницы сгенерированные CGI которые являются статически обслуживаемыми если только кто-либо (либо планировщик) не удалит статическое содержание. В таком случае содержание обновляется.

Решение:

Это делается следующим набором директив:

RewriteCond %{REQUEST_FILENAME} !-s

RewriteRule ^page\.html$ page.cgi [T=application/x-httpd-cgi,L]

Здесь, запрос к page.html приводит к внутреннему запуску соответствующего page.cgi если page.html все-ещё отсутствует или имеет нулевой размер. Фокус здесь в том что page.cgi это обычный CGI скрипт который (в дополнение к собственному STDOUT) записывает свой вывод в файл page.html. Запустив это один раз, сервер передает данные page.html. Когда вебмастер хочет обновить содержание, он просто удаляет page.html (обычно с помощью cronjob).
да. погуглите именно RewriteCond - условия которые должны быть пи приобразовании

для примера OR - Это или.

но можно комбинировать - использовать - AND

если и это и это и это - то site.ru/?abc&english&hello
т.е. уже не важна последовательность, но если в юрле есть abc и english и hello, то привести ссылку в соответсвии ?abc&english&hello

пример ниже


Цитата:
RewriteCond %{REMOTE_HOST} ^host1.* [OR]

RewriteCond %{REMOTE_HOST} ^host2.* [OR]

RewriteCond %{REMOTE_HOST} ^host3.*

RewriteRule ...some special stuff for any of these hosts...

Без этого флага вы должны были бы написать это условие/правило три раза.
как решите вопрос отпишитесь. как реализовали через условия

Последний раз редактировалось Alar; 22.07.2016 в 00:39. Причина: добавил
Alar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно заменить данную часть кода? Vova777 Общие вопросы Delphi 6 05.01.2013 00:11
Известны фамилии,адреса и телефоны 25-ти человек,Найти фамилии и адреса людей,чей телефон начинается с цифры 3. Расмотреть два слу salomon93 Паскаль, Turbo Pascal, PascalABC.NET 11 01.12.2011 23:36
RewriteRule wall66 PHP 3 05.01.2009 16:01
Часть фона одним цветом а другая часть другим (без таблиц). Lanselot HTML и CSS 4 25.04.2008 18:41