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

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

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2009, 12:08   #1
F1ernandes
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 14
По умолчанию Регулярные выражения и modrewrite

Нужно написать регулярное выражение довольно простого типа, которое будет переделывать ссылки следующего типа:

http://www.domain.com/?index

на

http://www.domain.com/index/ или http://www.domain.com/index.html



Есть много примеров для обратного перевода
# domain.com/articles/title/5/ из domaim.com/articles.php?name=title$page=5
RewriteRule ^articles([A-Za-z0-9-]+) /([0-9]+)/?$ article.php?name=$1&page=$2 [L]

Не понимаю для чего это надо, т.к. вроде никто такой задачи не преследует....


Сам начал разбираться, но почему получаю ссылку http://www.domain.com/index/?index, либо полу какую-нибудь ошибку сервера....


Я дошел до следующего кода:
RewriteEngine On
RewriteBase /
RewriteRule ^\?{1}[a-z]+$ /index/ [L]

соответственно, если бы строка заменялось, то добавил еще скобочки () и вместо index написал $1


Может есть какая-нибудь программа для отладки регулярных выражений?
F1ernandes вне форума Ответить с цитированием
Старый 13.11.2009, 12:26   #2
Алориан
Пользователь
 
Регистрация: 22.06.2009
Сообщений: 17
По умолчанию

Во первых прочитайте о том что такое регулярные выражения вообще:
http://phpclub.ru/detail/article/regexp_1
И научитесь их правильно составлять.

Во вторых прочитайте как работает mod_rewrite, можно начать отсюда например: http://ru.wikipedia.org/wiki/ЧПУ_(Интернет)
Хорошие отдельные ресурсы по mod_rewrite мне не попадались, но гугле разрозненных сведений тонны.

В вашем случае все довольно просто.
Код:
RewriteEngine On
RewriteBase /
RewriteRule ^/index/ ?index
То есть если кто то запросит http://www.domain.com/index/ то фактически отработает http://www.domain.com/?index
Алориан вне форума Ответить с цитированием
Старый 13.11.2009, 12:31   #3
F1ernandes
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 14
По умолчанию

попробовал сделать, как Вы написали, но ничего не получилось, выдается 404 ошибка.
F1ernandes вне форума Ответить с цитированием
Старый 13.11.2009, 12:33   #4
F1ernandes
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 14
По умолчанию

Про регулярные выражения и modrewrite почитал довольно много и только после этого решил спросить.
F1ernandes вне форума Ответить с цитированием
Старый 13.11.2009, 12:37   #5
Алориан
Пользователь
 
Регистрация: 22.06.2009
Сообщений: 17
По умолчанию

Цитата:
Сообщение от F1ernandes Посмотреть сообщение
попробовал сделать, как Вы написали, но ничего не получилось, выдается 404 ошибка.
Если выдается ошибка, значит по адресу http://www.domain.com/?index ничего нет. Попробуйте просто перейти по этому адресу и если все будет нормально, значит мой косяк.
Алориан вне форума Ответить с цитированием
Старый 13.11.2009, 12:49   #6
F1ernandes
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 14
По умолчанию

Переход осуществляется.
(Насчет modrewrite, я так понял он нужен, чтобы ЧПУ переделывать под ссылки понятные скрипту?(Ну если вот так, совсем просто рассматривать))
F1ernandes вне форума Ответить с цитированием
Старый 13.11.2009, 18:30   #7
Gerb22
Пользователь
 
Регистрация: 10.11.2009
Сообщений: 48
По умолчанию

Цитата:
Сообщение от F1ernandes Посмотреть сообщение
RewriteEngine On
RewriteRule ^\?(.*)$ $1/

or

RewriteEngine On
RewriteRule ^\?(.*)$ $1.html

Последний раз редактировалось Gerb22; 13.11.2009 в 18:32.
Gerb22 вне форума Ответить с цитированием
Старый 19.05.2010, 15:28   #8
vasiliyn
Новичок
Джуниор
 
Регистрация: 19.05.2010
Сообщений: 2
По умолчанию

подскажите как сделать такое:
у меня на сервере есть страница site.ru/page.htm
чтобы к ней был доступ по site.ru/?mod=page
vasiliyn вне форума Ответить с цитированием
Старый 19.05.2010, 15:33   #9
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

RewriteRule ^([a-z]+).htm$ index.php?mod=$1
SkyM@n вне форума Ответить с цитированием
Старый 19.05.2010, 15:46   #10
vasiliyn
Новичок
Джуниор
 
Регистрация: 19.05.2010
Сообщений: 2
По умолчанию

SkyM@n, спасибо, уже разобрался, причина была в другом

Последний раз редактировалось vasiliyn; 19.05.2010 в 16:00.
vasiliyn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения ACE Valery PHP 5 14.10.2009 11:37
Регулярные выражения AnalogXP Общие вопросы Delphi 0 01.08.2009 23:12
регулярные выражения wyvern PHP 3 09.04.2009 22:15
Регулярные выражения Adamant Общие вопросы C/C++ 1 26.11.2007 19:44