![]() |
mod_rewrite (вопрос)
Пожалуйста помогите,
ндо срочно сделать, а разобраться не могу ((( Задача в слудующем: есть: pub.php?l=rus&linkpage=hotels&linkpage2=fadaer&linkpage3=mosv&idpub=56 7 Надо сделать: rus/hotels/fadaer/mosv/567/ Делаю в htacess так: RewriteEngine on Options +FollowSymlinks RewriteRule ^rus/(.*)?/?$ pub.php?l=rus&linkpage=$1&linkpage2=$2&linkpage3=$3&idpub=$4 [L] а не работает ((( |
[офф]
Можно и не через mod_rewrite, а средствами php Как вариант вот пример: if ($PATH_INFO) { $path=ereg_replace('^/','?',$PATH_INFO); $path=preg_replace("!\?(.*?)/!si","&\\1=",$path); $path=preg_replace("!/(.*?)/(.*?)!si","&\\1=\\2",$path); parse_str($path); } а ссылки имеют вид: http://site.com/index.php/contacts/our - к примеру только не везде апач передает скрипту эту переменную $PATH_INFO, всмысле не на всех серверах. На апаче2 я так и не смог сделать это, на первом все ок. |
RewriteRule rus/(.*)?/(.*)?/(.*)?/(.*)?/(.*)?/?$ pub.php?l=rus&linkpage=$1&linkpage2=$2&linkpage3=$3&idpub=$4
|
Hubbitus
что то не работает, сделал так: RewriteEngine on Options +FollowSymlinks RewriteRule ^rus/(.*)?/(.*)?/(.*)?/(.*)?/(.*)?/?$ pub.php?l=rus&linkpage=$1&linkpage2=$2&linkpage3=$3&idpub=$4 [L] |
Незнаю, я проверил (до того как постить, и сейчас еще раз) - все работает как надо.
А вообще у тебя Mod_Rewrite включен, работает? |
Hubbitus
Да извиняюсь, работает все но: RewriteRule ^rus/(.*)?/(.*)?/(.*)?/(.*)?/?$ /pub.php?l=rus&linkpage=$1&linkpage2=$2&linkpage3=$3&idpub=$4 [L] ссылки типа www.vbvb.com/rus/about/info/more/1/ - работают, , а www.vbvb.com/rus/about/info/ - уже нет ((( мне надо допустим чтоб www.vbvb.com/rus/about/11/ и открывалась pub.php?l=rus&linkpage=about&linkpage2=linkpage3=&idpub=11 как это сделать? |
Цитата:
|
Hubbitus
если я правильно понял, то это: www.vbvb.com/rus/1/more/about/ ? в таком случае пропадает смысл ЧПУ.. |
Какой ЧПУ? И почему пропадет смысл? Ничего не понял.
Ну еще как вариант конечно можно передавать как у меня было, только все сделать необязательным, а в скрипте уже искать последний непустой параметр и принимать его за idpub. Такой путь мне кажется менее правильным, чем предложенный до этого. |
Цитата:
плиз, приведи пример, а то самому теперь надо, чтобы pub.php?l=rus в rus pub.php?l=rus&linkpage=about в rus/about pub.php?l=rus&linkpage=about&linkpage2=ours в rus/about/ours и т.д. всего 4 таких переменных. работает только, когда все 4 переменные присутсвуют :( Спасибо. |
и ее непонятнО: как можно огородить, чтобы изменение записи было только на файле index.php, а на admin.php и view.php нет.
|
Цитата:
RewriteRule ^rus/(.*)?(/.*)?(/.*)?(/.*)?/?$ Цитата:
RewriteCond %{REQUEST_FILENAME} !^.*(/admin.php|/view.php)$ Ну или наоборот, включи только для конкретного(ых), например так: RewriteCond %{REQUEST_FILENAME} ^.*(/index.php)$ Ну естественно RewriteCond должен стоять до RewriteRule. |
Цитата:
RewriteRule ^ cat/(.*)?(/.*)?(/.*)?(/.*)?/?$ index.php?cat=$1&subcat=$2&subcat2=$3&art=$4 Цитата:
|
Цитата:
RewriteRule ^cat/([^/]*)?/?([^/]*)?/?([^/]*)?/?$ /index.php?cat=$1&subcat=$2&subcat2=$3&art=$4 [L] Ну и скольку угодно можно прописать их так, хоть 100 параметров возможных и необязательных. |
неа :(
|
Цитата:
Приведи что ты написал конкретно, и на чем тестируешь что не работает. |
вот это прописано и .htaccess
Код:
RewriteEngine onВыдает 404. |
Цитата:
|
Насчет проблемы что если не все параметры - то не работает....
Тут есть одна хистрость - заключается она в порядке расположения строчке в htaccess Порядок должен быть такой : строка с урлом шде параметров очень много потом строка где параметров меньше потом строка где параметров еще меньше строка где параметров вообще нету И тогд все будет пучком... |
А не проще ли передавать в скрипт поный путь, а потом просто разбивать и анализировать его вручную?
.htaccess: Код:
RewriteRule rus/(.*) pub.php?path=$1 [L] |
Цитата:
|
Цитата:
Hubbitus спасибо ;) пробуемс. |
hempsmoke
[q]я пробовал так даже работало, но как-то это не так.[/q] Все так.. просто есть две логики... для начала : файл читается сверху вниз... поэтому строчки выполняются тоже сверху вниз и пока не найдут нужно правило - строчки будут выполняться... 1 способо - так как я сказал... 2 - определять сложными регулярками когда кончается урл имхо 1 способ быстрее |
Sensey
спасибо. а я располагал как раз наоборот. Hubbitus помог и предложил следущий вариант: Цитата:
|
Цитата:
Хотя может это оттого, что я делал следующее правило: RewriteRule ^list/([^/]*)?/?([^/]*)?/?([^/]*)?/?([^/]*)?/?$ /anime/rabota.php?cat=$1&subcat=$2&subcat2=$3&art=$4 [L] файл .htaccess лежит подкаталоге anime домена. А как надо слелать, чтобы выдать последний параметр за HTML-файл, то есть запрос типа domain.ru/cat/1/2/3/4.htm ? Я смог решить только на уровне скрипта. То есть для последнего параметра на PHP: PHP код:
|
Цитата:
А вот если хочется чтобы количество параметров было различным, то с этим значительно сложнее: Можно попробовать помудрить в несколько строчек формировать строчку из этих параметров специальным образом, а потом соответственно разбирать ее и таким образом находить последний аргумент. |
Цитата:
|
Цитата:
Однако что конкретно подразумевается все-таки под: Цитата:
|
Hubbitus, ну просто чтобы было не просто набор параметров через слеш, а типа как адрес статической страницы.
|
А, дак в последнем параметре нужно просто передать без расширения его значение чтоли??
Дак это элементарно, просто замени последнее ([^/]*)? на что-то вроде этого: ([^/]*\.\w+)? (Не уверен что будет работать, но лучше даже так: ([^/]*\.\w{1,4})?) |
Такой вопрос: а возможно ли с помощью mod_rewrite следущее:
У меня есть сайт на домене второго уровня. Я завожу к нему домены третьего уровня. Возможно ли написать такую переадресацию с помощью mod_rewrite или иным способом на домене третьего уровня, чтобы у меня брались страницы из определенной папки на домене второго уровня, при этом в адресной строке браузера URL не менялся. То есть допустим я набираю в адресной строке браузера адрес типа http://sub.domen.ru/page.htm А у меня вместо этого отображалось бы содержимое страницы http://domen.ru/sub/page.htm При том, что новый адрес в адресной строке не светится. |
Можно, это очень популярное применение mod_rewrite, и ссылок по данному впоросу полно:
http://www.sitepoint.com/forums/showthread.php?t=344192 http://www.sitepoint.com/forums/showthread.php?t=339390 http://www.vbulletin.com/forum/archi...hp/t-2889.html http://forum.ruweb.net/viewthread.php?tid=1430 И вообще, по запросу "subdomains on mod_rewrite" гугл выводит около 100 тыс результатов. Надеюсь поможет. |
| Часовой пояс GMT +4, время: 16:50. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.