- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как удалить плохие SEO-ссылки и очистить ссылочную массу сайта
Применяем отклонение ссылок
Сервис Rookee
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть страницы вида http://www.site.ua/razdel/page.shtml?20080915_1
Необходимо, чтобы открывалась страница вида
http://www.site.ua/razdel/index.php?p=page&id=20080915_1
Пробовал такую запись в .htaccess:
RewriteEngine on
RewriteBase /razdel/
RewriteRule ^(.*)\.shtml?(.*)$ index.php?p=$1&id=$2 [L]
но переменная после вопросительного знака теряется и не передается. Как сделать, чтобы работало?
RewriteRule ^(.*)\.shtml?(.*)$ index.php?p=$1&id=$2 [L]
Попробуйте экранировать знак вопроса.
RewriteRule ^(.*)\.shtml\?(.*)$ index.php?p=$1&id=$2 [L]
Хе..а я сижу думаю почему второй знак вопроса не обрабатывается.))
Попробуйте экранировать знак вопроса.
Если экранировать, вообще не срабатывает и отдает 404 ошибку - страница не найдена. Без экранирования знака вопроса перенаправляет на нужную страницу, но переменной (которая после знака вопроса в исходном url) нет.
скрипт вообще определяет переменную? скрипт в студию кинь, так я думаю никак вопрос не решить, скорее проблема в скрипте, в правилах нужно четко указать переменные. А так он будет выполнять тоже самое.
Не в этом дело. "Строка запроса" (то что идет после ?) не является частью пути к имени файла и RewriteRule не обрабатывается (RewriteRule сам по себе обрабатывает только имя файла), поэтому и в скрипт параметры запроса не передаются.
Если нужна строка запроса, используйте %{QUERY_STRING}
На Ваш пример экстраполировать не хочется, но смысл в чем.
при запросе a.html?ddd=fff
выдаст Array ( [q] => ddd=fff )
P.S.: Для Вашего случая придется видимо или разбирать строку запроса внутри скрипта (что самое разумное) или использовать условия в mod_rewrite по строке запроса
RewriteCond %{REQUEST_URI} или RewriteCond %{QUERY_STRING}
например
будет срабатывать только если в строке запроса встретится ddd
P.P.S.: (что-то нас расперло:))
попробуйте такой код ( http://zc.tj/mr/page.shtml?20080915_1 пример работы )
(естественно .htaccess куда надо кладите... или правила под свои пути правьте, и не будет 404 ошибки :))
RewriteRule ^(.*)\.shtml?(.*)$ index.php?p=$1&id=$2 [L,QSA]
а если так попробовать, что получится?
а если так попробовать, что получится?
RewriteRule ^(.*)\.shtml?(.*)$ index.php?p=$1&id=$2 [L,QSA]
Так тоже не получается - переменной нет
Superior добавил 17.01.2009 в 03:25
Не в этом дело. "Строка запроса" (то что идет после ?) не является частью пути к имени файла и RewriteRule не обрабатывается (RewriteRule сам по себе обрабатывает только имя файла), поэтому и в скрипт параметры запроса не передаются.
Если нужна строка запроса, используйте %{QUERY_STRING}
На Ваш пример экстраполировать не хочется, но смысл в чем.
при запросе a.html?ddd=fff
выдаст Array ( [q] => ddd=fff )
P.S.: Для Вашего случая придется видимо или разбирать строку запроса внутри скрипта (что самое разумное) или использовать условия в mod_rewrite по строке запроса
RewriteCond %{REQUEST_URI} или RewriteCond %{QUERY_STRING}
например
будет срабатывать только если в строке запроса встретится ddd
P.P.S.: (что-то нас расперло:))
попробуйте такой код
Последний код не работает - 404 ошибка
Superior добавил 17.01.2009 в 03:30
Сработал такой вариант:
RewriteEngine on
RewriteBase /razdel/
RewriteRule ^(.*)\.shtml?(.*)$ index.php?p=$1&id=%{QUERY_STRING} [L]
Всем спасибо за советы!
Сработал такой вариант:
RewriteEngine on
RewriteBase /razdel/
RewriteRule ^(.*)\.shtml?(.*)$ index.php?p=$1&id=%{QUERY_STRING} [L]
Всем спасибо за советы!
Данный вариант не совсем корректный, ибо Ваше правило означает - все что угодно (а может и ничего), затем .shtm потом может быть (а может и не быть l) потом еще все что угодно до конца строки.
Т.е. по правилу пройдут и строчка вида:
/razdel/.shtm
/razdel/324234.shtmFile
и так далее
Более правильный вариант тогда уж:
RewriteEngine on
RewriteBase /razdel/
RewriteRule ^(.*)\.shtml?(.*)$ index.php?p=$1&id=$2 [L]
но переменная после вопросительного знака теряется и не передается. Как сделать, чтобы работало?
RewriteRule ^(.*)\.shtml?(.*)$ index.php?p=$1&id=$2 [L]
заменить на :
RewriteRule ^(.*)\.(shtml)?(.*)$ index.php?p=$1&id=$2 [L]
RewriteRule ^(.*)\.(shtml)?(.*)$ index.php?p=$1&id=$2 [L]
Вы если уж не знаете о чем пишите, то хотя бы попробовали - работает ли такой пример. QueryString в RewriteRule не обрабатывается, а знак вопроса является квантификатором указывающим на 0 или 1 вхождение в шаблоне предваряющего его текста или группы!