- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте.
Только знакомлюсь с mod_rewrite, поэтому есть непонятный момент.
На сайте преобразование
site.ru/work/ -> site.ru/index.php?module=work
site.ru/work/19/ -> site.ru/index.php?module=work&id=19
Соответственно 2 правила:
RewriteRule ^work/$ /index.php?module=work [L]
RewriteRule ^work/([0-9]+)/$ /index.php?module=work&id=$1 [L]
Можно ли сделать так, чтобы они выполнялись по очереди:
сначала сработало первое
а потом в полученном site.ru/index.php?module=work/19/
заменилась бы оставшаяся часть (если она есть).
[L] этот флаг означает что это правило последнее, и после него остальыне правила выполнять не надо.
Если убрать, то к URL будут применяться и следующие правила.
А смысл? Все у вас и так правильно написано.
А смысл? Все у вас и так правильно написано.
Кроме work, есть еще много других путей, и еще цифры в конце могут отсутствовать.
Чтобы не писать для каждого правило, надо объединить все в одно.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-z]+)/([0-9]*)/*$ /index.php?module=$1$2 [NC]
RewriteRule ^module=([A-z]+)([0-9]+)$ /index.php?module=$1&id=$2 [NC,L]
Вроде как должно вот так работать:
site.ru/work/19/ -> site.ru/index.php?module=work19
site.ru/index.php?module=work19 -> site.ru/index.php?module=work&id=19
Но не работает...
RewriteRule ^([A-z]+)/([0-9]*)/*$ /index.php?module=$1$2 [NC]
зачем там звездочка в конце условия?
Если нужно получить запрос /index.php?module=work&id=19, попробуйте так:
Если нужно получить запрос /index.php?module=work&id=19, попробуйте так:
Спасибо. То что нужно )
RewriteRule ^module=([A-z]+)([0-9]+)$ /index.php?module=$1&id=$2 [NC,L]
В RewriteRule не попадает строка с параметрами (все что идет после "?").
Соотвественно это правило не будет работать.
В вашем случае можно попробовать использовать RewriteCond, как-то так:
RewriteCond %{QUERY_STRING} ^module=([A-z]+)([0-9]+)$
RewriteRule ^(*)$ /index.php?module=%1&id=%2 [L]
PS Решение от w0den, конечно, наиболее верное.