Форум программистов, компьютерный форум, киберфорум
Наши страницы
Apache, htaccess
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Nebiros
33 / 33 / 16
Регистрация: 23.03.2010
Сообщений: 2,061
1

о RewriteRule

14.12.2010, 13:07. Просмотров 1613. Ответов 8
Метки нет (Все метки)

пытаюсь на своем сайте сделать ЧПУ , все страницы меняются 1й переменной либо page(отвечает за категорию и страницы - пример page=1001,page=1012,page=4003) либо w(отвечает за показ одной целой новости пример w=1,w=4,w=56) , тоесть адресная строка выглядит либо так http://site/index.php?page=1001 либо так http://site/index.php?w=46 , в модуле прописываю так -

Perl
1
2
3
4
5
RewriteEngine On
RewriteBase /
 
RewriteRule page/(.*)/$ /index.php?page=$1
RewriteRule news/(.*)/$ /index.php?w=$1
или так

Perl
1
2
3
4
5
RewriteEngine On
RewriteBase /
 
RewriteRule page/(.*)/$ /index.php?$1
RewriteRule news/(.*)/$ /index.php?$1
и флаги ставил [L] , но результат нулевой. На сколько я понял что к чему то
1) это во что должно превратиться (page или news)
2) /(.*)/$ - я так понял переводится как "все что после точки"
3) /index.php? - какой скрипт
4)$1 - я так понял что первая переменная($2 - вторая и т д ).
Все примеры перепробовал но ничего не работает . Подскажите в чем ошибка или может я неправильно чтото понял?

P.s. - выделил кодом Perl так просто чтобы код выделялся...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2010, 13:07
Ответы с готовыми решениями:

RewriteCond влияет толко для один, следушчи RewriteRule. можно как-то превишать количество RewriteRule
здраствуите, вот что интересно, сделаю mod_rewrite и для етого в .htaccess фаиле пишу ...

RewriteRule
Здравствуйте. Есть файл .htaccess: RewriteEngine On RewriteRule ^year/(+)/?$...

RewriteRule
Люди помогите сделать в htaccess код Мне нужно чтобы из такого урл ...

RewriteRule
Помогите написать RewriteRule для поиска. search.php <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML...

RewriteRule
AddDefaultCharset utf-8 RewriteEngine on RewriteRule ^(.+)/ $1\.php RewriteRule ^(.+) $1\.php...

8
Vovan-VE
13171 / 6558 / 1039
Регистрация: 10.01.2008
Сообщений: 15,069
14.12.2010, 18:11 2
Код
RewriteEngine On
RewriteBase /
 
RewriteRule ^page/(.*)/?$ /index.php?page=$1
RewriteRule ^news/(.*)/?$ /index.php?w=$1
Набираете http://site.ru/page/foo/bar/lol - загружается http://site.ru/index.php?page=foo/bar/lol

Цитата Сообщение от Nebiros Посмотреть сообщение
2) /(.*)/$ - я так понял переводится как "все что после точки"
Это значит "символ / , за ним любые символы в любом количестве и в конце обяательно /"
Цитата Сообщение от Nebiros Посмотреть сообщение
4)$1 - я так понял что первая переменная($2 - вторая и т д ).
Что совпало в первом кармане, во втором и т.д.

А .htaccess вообще у Вас применяется?
0
Nebiros
33 / 33 / 16
Регистрация: 23.03.2010
Сообщений: 2,061
14.12.2010, 18:41  [ТС] 3
Цитата Сообщение от Vovan-VE Посмотреть сообщение
А .htaccess вообще у Вас применяется?
сайт расположен на одном бесплатном хосте и там изначально к корневой папке лежит документ .htaccess и в нем я прописываю вышенаписанное

Цитата Сообщение от Vovan-VE Посмотреть сообщение
мне нужно чтобы при попадании на адрес http://site.ru/index.php?page=foo/bar/lol в адресной строке высвечивало http://site.ru/page/foo/bar/lol . а я как ни писал всеравно высвечивается ?page... и т д
я имею ввиду свой сайт...


Цитата Сообщение от Vovan-VE Посмотреть сообщение
Это значит "символ / , за ним любые символы в любом количестве и в конце обяательно /"
я имел ввиду (.*) именно точка со знаком умножения означает все что после точки , так?
0
Vovan-VE
13171 / 6558 / 1039
Регистрация: 10.01.2008
Сообщений: 15,069
14.12.2010, 18:55 4
Цитата Сообщение от Nebiros Посмотреть сообщение
я имел ввиду (.*) именно точка со знаком умножения означает все что после точки , так?
Нет. Точка значит "любой символ". * значит "в любом количестве". Получается "сколько угодню любых символов".

Цитата Сообщение от Nebiros Посмотреть сообщение
мне нужно чтобы при попадании на адрес http://site.ru/index.php?page=foo/bar/lol в адресной строке высвечивало http://site.ru/page/foo/bar/lol .
Сама идеология mod_rewrite совсем другая. Зачем Вы пользователю даете ссылки "?page=42" ? Отдавайте ему нормальные ссылки "/page/42/" . А mod_rewrite при обращении пользователя к "/page/42/" фактически будет обращаться к "?page=42" незаметно для пользователя.
0
14.12.2010, 18:55
Nebiros
33 / 33 / 16
Регистрация: 23.03.2010
Сообщений: 2,061
14.12.2010, 19:02  [ТС] 5
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Сама идеология mod_rewrite совсем другая. Зачем Вы пользователю даете ссылки "?page=42" ? Отдавайте ему нормальные ссылки "/page/42/" . А mod_rewrite при обращении пользователя к "/page/42/" фактически будет обращаться к "?page=42" незаметно для пользователя.
так я про это и говорю что хочу чтобы пользователю давались ссылки вида "/page/42/" а у меня не получается так , вот и вопрос собственно в этом и стоит...
вот и полазив по сети нашел способ , вот этот
Perl
1
2
3
4
5
RewriteEngine On
RewriteBase /
 
RewriteRule page/(.*)/$ /index.php?page=$1
RewriteRule news/(.*)/$ /index.php?w=$1
но у меня по прежнему в строке php?w= и так далее , может я изначально не так выразился но в конечном итоге мне нужно чтобы пользователь в адресной строке видел /page/42/ а не ?page=42
как это сделать или где у меня ошибка или что я не так делаю?

Кстати между делом - .4 будет означать 4 любых символа?
0
Vovan-VE
13171 / 6558 / 1039
Регистрация: 10.01.2008
Сообщений: 15,069
14.12.2010, 19:05 6
Цитата Сообщение от Nebiros Посмотреть сообщение
но у меня по прежнему в строке php?w= и так далее
Вы не поняли. Надо не
HTML5
1
<a href="?page=42">
а надо
HTML5
1
<a href="/page/42">
0
Nebiros
33 / 33 / 16
Регистрация: 23.03.2010
Сообщений: 2,061
14.12.2010, 19:12  [ТС] 7
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Вы не поняли. Надо не
Код HTML
1
<a href="?page=42">
а надо
Код HTML
1
<a href="/page/42">
если не ошибаюсь так оно будет искать папку page а в ней папку 42 (или я ошибаюсь) а у меня то всего один файл index?php а по прикрепленным к нему переменным вычисляются данные с БД и как тогда все перестроить под ваш метод ссылок я непонимаю...
0
eisenheim
18 / 8 / 2
Регистрация: 06.06.2011
Сообщений: 268
16.09.2012, 09:29 8
Так в этом и суть ЧПУ. Папок как таковых не существует, но работать оно будет.
0
Илья Федин
Бог живет в /root
884 / 350 / 1
Регистрация: 12.08.2012
Сообщений: 4,401
Записей в блоге: 5
16.09.2012, 12:42 9
А так:
Код
RewriteEngine on
 
RewriteBase / 
 
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
 
RewriteRule ^page/(.*)$ index.php?page=$1
RewriteRule ^news/(.*)$ index.php?w=$1
?
0
16.09.2012, 12:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2012, 12:42

RewriteRule
Всем доброго дня! Покажите как на практике можно заенить URL ...

RewriteRule
Никак не могу разобрать как это работает. Сколько примеров не смотрел ничего не получается....

RewriteRule
Прошу помощи. Не знаю как сделать так что бы работала вот эта строка со знаком вопроса. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru