|
|
|
| Извиняюсь, что дублирую тему, но в рег. выражениях который день молчание, а проблему самостоятельно решить не получается.
Возникла следующая проблема: запросы на поддомены у меня направляются на index в руте сайта. Содержимое файла .htaccess сейчас такое:
RewriteEngine on
Options +FollowSymlinks
RewriteCond %{HTTP_HOST} ^(.+)\.mysite\.ru$ [NC]
RewriteCond %{HTTP_HOST} !^www\.mysite\.ru$ [NC]
RewriteRule ^(.*) %{HTTP_HOST}$1/
RewriteRule ^(.*)\.mysite\.ru(.*)$ index.php?action=$1
|
Возникла острая потребность в передаче еще двух гет параметров в виде http://action.mysite.ru/parametr.html или http://action.mysite.ru/parametr1/ и вот тут понимание «подвисло». Подскажите, please, как можно их передать скрипту? | |
|
|
|
|
|
|
|
для: babilonian
(08.02.2007 в 23:15)
| | Честно говоря, задача не совсем понятна.
Исходные URL Вы написали:
http://action.mysite.ru/parametr.html или http://action.mysite.ru/parametr1/
а в какие URL они должны преобразовыватся не ясно.
Предлагаю такой вариант:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^(.+)\.mysite\.ru$ [NC]
RewriteCond %{HTTP_HOST} !^www\.mysite\.ru$ [NC]
RewriteCond %{REQUEST_URI} !index.php
RewriteRule ^(.*)$ /index.php?id=%{HTTP_HOST}¶m=$1 [L]
|
Имя поддомена передается в параметре id, а оставшийся URL в параметре param.
Вот пример для URL-а http://test.mysite.ru/dir1/page.html
[id] => test.mysite.ru
[param] => dir1/page.html
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(10.02.2007 в 07:26)
| | Объяснение понятно. Но, хотелось задать пару дополнительных вопросов:
1. Что в данном случае, означает строка
RewriteCond %{REQUEST_URI} !index.php
| ?
2. Если напрямую задавать вид параметров в строке
RewriteRule ^(.*)$ /index.php?id=%{HTTP_HOST}¶m=$1 [L]
|
, допустим,
RewriteRule ^(.*).htm$ /index.php?id=%{HTTP_HOST}¶m=$1 [L]
|
, то перестает обрабатываться %{HTTP_HOST}. То бишь, если в адресной строке идет http://peremennaya.mysite.ru, то id=peremennaya уже не проходит:(
То, есть адрес peremennaya.mysite.ru/peremennaya1.htm, хотелось бы обработать как index.php?id=peremennaya&peremennaya1=peremennaya1. | |
|
|
|
|
автор: glsv (13.02.2007 в 08:53) |
|
|
для: babilonian
(13.02.2007 в 06:49)
| | Да, URL http://peremennaya.mysite.ru для измененного правила (ниже) не подходит.
[code]
RewriteRule ^(.*).htm$ /index.php?id=%{HTTP_HOST}¶m=$1 [L]
[code]
Я как раз и акцентировал Ваше внимание на том, что задача не полностью поставлена. Можно несколько правил использовать.
Составьте для начала полный список все возможных URL и к чему Вы хотите их преобразовать (каждый). Далее алгоритмизируйте правила преобразования. Может получится одно унивесальное правило, может быть несколько разны.
И на основе этих данных уже можно будет писать правила для mod_rewrite. | |
|
|
|
|
|
|
|
для: glsv
(13.02.2007 в 08:53)
| | Если точно, то это должно выглядеть так:
1. запрос на адрес http://peremennaya.mysite.ru/ обрабатывается как http://mysite.ru/page.php?id= peremennaya
2. запрос на адрес http://peremennaya.mysite.ru/index.htm обрабатывается как http://mysite.ru/page.php?id= peremennaya&subid= index
3. запрос на адрес http://peremennaya.mysite.ru/peremennaya2/index.htm обрабатывается как http://mysite.ru/page.php?id= peremennaya&mode= peremennaya2&subid=index
4. ну и то, что я сам смог сотворить:
RewriteRule ^([0-9a-zA-Z]*)-([0-9a-zA-Z@.]*)-([0-9a-zA-Z]*).htm$ index.php?action=$1&data1=$2&data2=$3
RewriteRule ^([0-9a-zA-Z]*).htm$ index.php?action=$1
|
Это перенаправление с адресов вида: http://mysite.ru/peremennaya.htm и http://mysite.ru/peremennaya-peremannaya1-peremannaya2.htm на страницу index.php в руте. Тот есть, в руте у меня полуцчаются две исполняемых страницы, одна из которых работает с «прямыми» адресами, а другая с поддоменными. | |
|
|
|
|
|
|
|
для: babilonian
(14.02.2007 в 00:20)
| | ... и тишина... | |
|
|
|
|
|
|
|
для: babilonian
(14.02.2007 в 00:20)
| | Можно попробовать как-то так.
RewriteCond %{HTTP_HOST} ^(.+)\.book$ [NC]
RewriteCond %{HTTP_HOST} !^www\.book$ [NC]
RewriteCond %{REQUEST_URI} !page.php
RewriteRule ^(.*)\.html$ /page.php?id=%{HTTP_HOST}&subid=$1 [L]
RewriteCond %{REQUEST_URI} !page.php
RewriteRule ^(.*)$ /page.php?id=%{HTTP_HOST} [L]
|
Для адреса http://test.mysite.ru/index.html в скрипт будет переданы следующие переменные.
[id] => test.mysite.ru
[subid] => index
|
Т.е. переменную id нужно будет обработать уже в скрипте. | |
|
|
|