- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Решил воспользоваться методом mod_rewrite для подмены URL.
Сделал такой htaccess:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^test/(.*) test.php?a=$2
И сам test.php:
<? print "Итого = $a" ?>
Если задаю адрес: www.site.ru/test/25, то выводится просто "Итого =", а 25 не выводится. То есть на test.php он 100% переводит, но переменную не берет.
Подскажите, где же я ошибся?
Исправь:
RewriteRule ^test/(.*) test.php?a=$2
на
RewriteRule ^test/(.*) test.php?a=$1
Interitus, да это была ошибка-опечатка.
Но даже с $1 не работает все равно!
Может быть в самом php-шном файле эту переменную ($a) нужно еще как-то вытаскивать? Какая там была команда про VARIABLE?
Ну вообще в php.ini надо чтобы было register_argc_argv=On, но это по умолчанию так. Я еще подумаю, что это может быть.
Interitus, еще могу добавить кое-что:
RewriteRule ^test/(.*) test.php?a=$1 - вот как у меня было сначала. Потом я подумал, что может быть нужно так:
RewriteRule ^test/(.*)$ test.php?a=$1 - но так тоже не сработало.
Подумай, пожалуйста, что же за беда такая?
И еще. Чтобы везде задавать относительные ссылки я хочу использовать в заголовках HTML тег <BASE href="http://www.site.ru">. Все ли броузеры его понимают?
BASE --насколько я знаю -- понимают все. Опять же, ничто не мешает использовать абсолютные ссылки.
Насчет правила: посмотрите, что написано в rewrite-логе.
И я бы попробовал в правиле задать оба адреса в абсолютном виде.
Если версия PHP выше 4.2, то по умолчанию параметр register_globals поставлен в Off и глобальные переменные не создаются. В Вашем случае следует попробовать $_GET['a']. Если напрямую (/test.php?a=25) скрипт отрабатывает, то проблема не в этом.
Единственный раз попробовал применить BASE. Все было нормально, потом пришел робот Апорта, проигнорировал BASE, получил серию 404 ошибок, обиделся и ушел. С тех пор я его не видел, а BASE сразу убрал :(
Хотя, за полгода могли и подправить.
Cherny, да, напрямую test.php?a=25 отрабатывает. 😕
Andy Lion, есть ли доступ к httpd.conf? Если есть, выложи его содержимое или просто кусок между <Directory корень_сайта> и </Directory>.
Cherny, вот про роботов не знал.. Думаю, что надо полпросить Грэя задать вопрос представителям поисковиков.
-Не разбираюсь в реврайте, но может ли быть проблема в
RewriteRule ^/test/(.*)$ test.php?a=$1
т.е., / перед директорией?