Форум программистов, компьютерный форум, киберфорум
Наши страницы

Apache, htaccess

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 50, средняя оценка - 4.96
Garrys808
2 / 2 / 0
Регистрация: 11.02.2013
Сообщений: 66
#1

Настройка mod_rewrite (ЧПУ) - Apache, htaccess

21.04.2013, 23:39. Просмотров 6707. Ответов 140
Метки нет (Все метки)

имеется сайт на котором нужно сделать ЧПУ на htaccess
страницы имеют вид http://mysyte.ru/page.php?title_url=mypage&id=30

первую часть у меня получилось преобразовать http://mysyte.ru/page.php?title_url=mypage в http://mysyte.ru/mypage
а вот с &id=30 не получается
с первой частью я поступил так:

Код
RewriteRule ^page.php/?title_url=$ [R=301,L]
RewriteRule ^([A-Za-z0-9-]+)/?$ page.php?title_url=$1 [L]
для второй части пишу так

Код
RewriteRule ^page.php/?title_url=$1&id=$ [R=301,L]
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ page.php?title_url=$1&id=$2 [L]
но сервер если набрать http://mysyte.ru/mypage/30 выдает ошибка 404 - такой страницы не существует подскажите где ошибка? прошерстил кучу форумов нигде ничего не нашел все варианты которые находил так же не работают.

Добавлено через 1 час 41 минуту
пишу так
Код
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ page.php?title_url=$1&id=$2 [L]
страница выводится но без css т.е. белая рамка и в ней данные из нужной страницы

Добавлено через 1 час 17 минут
видимо тут никогда не дождаться помощи!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2013, 23:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Настройка mod_rewrite (ЧПУ) (Apache, htaccess):

mod_rewrite ЧПУ - Apache, htaccess
Приветствую. Понимая, что подобных тем тьма, не хотел создавать новую но времени у меня нет особо чтоб рыскать ответ на мой вопрос, с...

Mod_rewrite и ЧПУ - Apache, htaccess
Всем привет. Уже 2-ой день мучаюсь над реализацией ЧПУ для своего сайта. Хочу реализовать это дело через mod_rewrite. На локальной машине...

ЧПУ htaccess и mod_rewrite? - Apache, htaccess
Всем доброго для! Кто может помогите разобраться с проблемой. Перечитал много тем а решения так и не нашел. Вот пример ссылки на...

Чпу, mod_rewrite и .htaccess - Apache, htaccess
Наворотил делов так что вчера сайт вообще не отвечал, из-за условий в файле .htaccess он попадал в цикличность и выдавал сообщение...

Не работает ЧПУ (mod_rewrite) - Apache, htaccess
Уже голову себе сломал. Есть такая ссылка: <a href="/category/23">Категория с id=23</a> Теперь условие в .htaccess RewriteEngine on ...

mod_rewrite - как сделать ЧПУ? - Apache, htaccess
Как через ф-цию mod_rewrite сделать ЧПУ?

140
mialpet
Сексуальный
84 / 49 / 1
Регистрация: 02.04.2013
Сообщений: 443
22.04.2013, 11:05 #2
Цитата Сообщение от Garrys808 Посмотреть сообщение
видимо тут никогда не дождаться помощи!
Сказано через 3 часа после поста, вы первый раз пользуетесь форумом?
Цитата Сообщение от Garrys808 Посмотреть сообщение
имеется сайт на котором нужно сделать ЧПУ на htaccess
Ну и причем здесь PHP? Вам в раздел Web-серверы надо. По идее админы должны перенести топик, ну или попробуйте сами к ним обратиться.
Цитата Сообщение от Garrys808 Посмотреть сообщение
страница выводится но без css т.е. белая рамка и в ней данные из нужной страницы
Значит проблемма со страницей, может где-то косяк с путями к таблицам стилей.

Добавлено через 59 минут
Цитата Сообщение от Garrys808 Посмотреть сообщение
страница выводится но без css т.е. белая рамка и в ней данные из нужной страницы
А еще есть вероятность что путь к CSS попадает под ваше правило, попробуйте вбить этот путь в браузер и там будет видно есть редирект или нет (вы должны увидеть содержимое файла если все хорошо).
0
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16701 / 6623 / 433
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
22.04.2013, 11:44 #3
Цитата Сообщение от Garrys808 Посмотреть сообщение
страница выводится но без css т.е. белая рамка и в ней данные из нужной страницы
все пути к скриптам, стилям и т.п. должны начинаться от корневой директории. Тут два варианта:
1. Использовать тег <base>
2. В начале путей проставить слэш - /

Добавлено через 1 минуту
либо на пыхе генерить корневую директорию, наподобие
PHP
1
dirname($_SERVER['SCRIPT_NAME']); //если используется единая точка входа
Добавлено через 4 минуты
Цитата Сообщение от Garrys808 Посмотреть сообщение
страницы имеют вид
с GET-параметрами так не получится работать, если вы хотите сделать редирект. Необходимо использовать QUERY_STRING, наподобие такого:
Код
RewriteEngine On

RewriteCond %{QUERY_STRING} ^title_url=([A-Za-z0-9]+)&id=(\d+)$ [NC]
RewriteRule ^page\.php$ /page/%1/%2/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^page/([A-Za-z0-9]+)/(\d+)/?$ page.php?title_url=$1&id=$2 [L]
0
Garrys808
2 / 2 / 0
Регистрация: 11.02.2013
Сообщений: 66
22.04.2013, 13:38  [ТС] #4
К моему сожалению, Ваш вариант тоже не работает!

Добавлено через 5 минут
Я уже не первый раз пользуюсь этим форумом, но к сожалению тут еще ни разу мне не помогли, либо я сам решил вопрос либо на других форумах.
пути к CSS у меня прописаны полностью в файлах.
Вы сути не понимаете если бы били проблемы с путями CSS то в первом варианте была бы та же проблема, но там все нормально работает, а вот когда я пытаюсь получить доступ ко второму уровню строки тут вот возникает проблема, как на локалке так и на хостинге - совершенно одинаково.
0
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16701 / 6623 / 433
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
22.04.2013, 13:43 #5
"не работает" каким образом?

Добавлено через 3 минуты
Цитата Сообщение от Garrys808 Посмотреть сообщение
Вы сути не понимаете если бы били проблемы с путями CSS то в первом варианте была бы та же проблема
Это вы как раз не понимаете В первом случае нет проблем? А вы поставьте слэш в конце первого пути, сразу появятся. Если браузер видит путь вида site.ru/path то он считает что это все та же самая директория, и составляет путь от site.ru/ . Как только вы добавляете слэш site.ru/path/ - браузер начинает считать текущей директорией ее и путь составляет уже от следующей директории - т.е. от site.ru/path/. Поэтому, самый лучший (и самый простой) вариант в путях везде добавить в начале адреса слэш /, чтобы браузер, независимо от текущей виртуальной директории подключал все относительно корневой директории.
0
mialpet
22.04.2013, 13:44
  #6

Не по теме:

Цитата Сообщение от Garrys808 Посмотреть сообщение
Я уже не первый раз пользуюсь этим форумом, но к сожалению тут еще ни разу мне не помогли, либо я сам решил вопрос либо на других форумах.
Это бесспорно очень ценная информация, но суть не в этом, а в том что вы сразу же получить ответ хотите, а не ждать его, а тут знаете как говориться: "за скорость ...

0
Garrys808
2 / 2 / 0
Регистрация: 11.02.2013
Сообщений: 66
22.04.2013, 14:14  [ТС] #7
Не работает это значит вообще не работает ни при каком варианте. Сервер просто говорит ошибка пути и ничего ни одна страница не открывается при любом варианте составления пути. В моем варианте в первом случае можно ставить слеш или не ставить всеравно все ок работает как часы. А вот когда дальше путь указываю site.ru/path/ вот тогда проблемы.

Добавлено через 4 минуты
Цитата Сообщение от mialpet Посмотреть сообщение

Не по теме:


Это бесспорно очень ценная информация, но суть не в этом, а в том что вы сразу же получить ответ хотите, а не ждать его, а тут знаете как говориться: "за скорость ...

В моем случае я не сижу и не жду ответа, а пытаюсь найти ошибку для чего и задаю вопросы. Но по сути только слышу от вас упреки в свой адрес. Может я и не силен в программировании но это не повод пытаться меня очередной раз ткнуть носом в это. Есть масса других направлений где я очень неплохо соображаю, но я не пытаюсь никого тыкать носом, а стараюсь помочь человеку понять это направление.
0
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16701 / 6623 / 433
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
22.04.2013, 14:21 #8
Код был написано только на полный путь. Для открытия пути без id необходимо было также дописать и это правило. Попробуйте так
Код
RewriteEngine On
 
RewriteCond %{QUERY_STRING} ^title_url=([A-Za-z0-9]+)&id=(\d+)$ [NC]
RewriteRule ^page\.php$ /page/%1/%2/ [R=301,L]
 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^page/([A-Za-z0-9]+)/?$ page.php?title_url=$1 [L,QSA]
RewriteRule ^page/([A-Za-z0-9]+)/(\d+)/?$ page.php?title_url=$1&id=$2 [L,QSA]
Цитата Сообщение от Garrys808 Посмотреть сообщение
В моем варианте в первом случае можно ставить слеш или не ставить всеравно все ок работает как часы. А вот когда дальше путь указываю site.ru/path/ вот тогда проблемы.
Вы невнимательны, я про это уже говорил.
Цитата Сообщение от Garrys808 Посмотреть сообщение
Но по сути только слышу от вас упреки в свой адрес.
Если мои "упреки" вас напрягают, вы скажите, не стесняйтесь. Я отпишусь от темы.
0
mialpet
Сексуальный
84 / 49 / 1
Регистрация: 02.04.2013
Сообщений: 443
22.04.2013, 14:23 #9

Не по теме:

Цитата Сообщение от Garrys808 Посмотреть сообщение
Добавлено через 1 час 17 минут
видимо тут никогда не дождаться помощи!
Я об этом.


Цитата Сообщение от Garrys808 Посмотреть сообщение
Сервер просто говорит ошибка пути и ничего ни одна страница не открывается при любом варианте составления пути.
Как бы суть в том что важно узнать что это за ошибка, другими словами что конкретно вы видите на экране.
0
Garrys808
2 / 2 / 0
Регистрация: 11.02.2013
Сообщений: 66
22.04.2013, 14:27  [ТС] #10
Цитата Сообщение от KOPOJI Посмотреть сообщение
Код был написано только на полный путь. Для открытия пути без id необходимо было также дописать и это правило. Попробуйте так
Код
RewriteEngine On
 
RewriteCond %{QUERY_STRING} ^title_url=([A-Za-z0-9]+)&id=(\d+)$ [NC]
RewriteRule ^page\.php$ /page/%1/%2/ [R=301,L]
 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^page/([A-Za-z0-9]+)/?$ page.php?title_url=$1 [L,QSA]
RewriteRule ^page/([A-Za-z0-9]+)/(\d+)/?$ page.php?title_url=$1&id=$2 [L,QSA]
Вы невнимательны, я про это уже говорил.

Если мои "упреки" вас напрягают, вы скажите, не стесняйтесь. Я отпишусь от темы.
при таком коду получается переадрессация со страницы с www на страницу без

[Mon Apr 22 12:21:40 2013] [error] [client 127.0.0.1] File does not exist: Z:/home/S808.local/www/Residence-permit-Czech-Republic, referer: http://s808.local/Residence-permit-Czech-Republic/
0
KOPOJI
22.04.2013, 14:27
  #11
 Комментарий модератора 
Ближе к теме.
0
Garrys808
2 / 2 / 0
Регистрация: 11.02.2013
Сообщений: 66
22.04.2013, 14:28  [ТС] #12
и естественно ни одна страница не открывается
0
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16701 / 6623 / 433
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
22.04.2013, 14:31 #13
Цитата Сообщение от Garrys808 Посмотреть сообщение
при таком коду получается переадрессация со страницы с www на страницу без
пропишите тогда с www, попробуйте так:
Код
RewriteEngine On
 
RewriteCond %{QUERY_STRING} ^title_url=([A-Za-z0-9]+)&id=(\d+)$ [NC]
RewriteRule ^page\.php$ %{HTTP_HOST}/page/%1/%2/ [R=301,L] #или напрямую задать http://www.site.ru/page/%1/%2/
 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^page/([A-Za-z0-9]+)/?$ page.php?title_url=$1 [L,QSA]
RewriteRule ^page/([A-Za-z0-9]+)/(\d+)/?$ page.php?title_url=$1&id=$2 [L,QSA]
Хотя странно, хост не должен трогаться вообще

Добавлено через 1 минуту
Цитата Сообщение от Garrys808 Посмотреть сообщение
File does not exist: Z:/home/S808.local/www/
вы где проверяете?
0
Garrys808
2 / 2 / 0
Регистрация: 11.02.2013
Сообщений: 66
22.04.2013, 14:34  [ТС] #14
Цитата Сообщение от KOPOJI Посмотреть сообщение
пропишите тогда с www, попробуйте так:
Код
RewriteEngine On
 
RewriteCond %{QUERY_STRING} ^title_url=([A-Za-z0-9]+)&id=(\d+)$ [NC]
RewriteRule ^page\.php$ %{HTTP_HOST}/page/%1/%2/ [R=301,L] #или напрямую задать http://www.site.ru/page/%1/%2/
 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^page/([A-Za-z0-9]+)/?$ page.php?title_url=$1 [L,QSA]
RewriteRule ^page/([A-Za-z0-9]+)/(\d+)/?$ page.php?title_url=$1&id=$2 [L,QSA]
Хотя странно, хост не должен трогаться вообще

Добавлено через 1 минуту

вы где проверяете?
я проверяю у себя на локалке

Not Found

The requested URL /page/Residence-permit-Czech-Republic was not found on this server.
Подсказка Денвера

Вы ошиблись при наборе URL в браузере. Вероятнее всего, сервер пытается найти файл Z:/home/S808.local/www/page/Residence-permit-Czech-Republic, которого не существует.

это лог
[Mon Apr 22 12:21:40 2013] [error] [client 127.0.0.1] File does not exist: Z:/home/S808.local/www/Residence-permit-Czech-Republic, referer: http://s808.local/Residence-permit-Czech-Republic/
[Mon Apr 22 12:31:15 2013] [error] [client 127.0.0.1] File does not exist: Z:/home/S808.local/www/Residence-permit-Czech-Republic
[Mon Apr 22 12:31:35 2013] [error] [client 127.0.0.1] File does not exist: Z:/home/S808.local/www/Residence-permit-Czech-Republic
[Mon Apr 22 12:32:01 2013] [error] [client 127.0.0.1] File does not exist: Z:/home/S808.local/www/page
0
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16701 / 6623 / 433
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
22.04.2013, 14:40 #15
Ну так у вас под регулярки адреса не попадают
Цитата Сообщение от Garrys808 Посмотреть сообщение
Z:/home/S808.local/www/page
Код
RewriteRule ^page/?$ page.php [L]
Цитата Сообщение от Garrys808 Посмотреть сообщение
Z:/home/S808.local/www/Residence-permit-Czech-Republic
Код
RewriteRule ^([-_A-Za-z0-9]+)/?$ page.php?title_url=$1 [L]
Добавлено через 1 минуту
Цитата Сообщение от Garrys808 Посмотреть сообщение
/page/Residence-permit-Czech-Republic
Код
RewriteRule ^page/([-_A-Za-z0-9]+)/?$ page.php?title_url=$1 [L]
0
22.04.2013, 14:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2013, 14:40
Привет! Вот еще темы с ответами:

Проблемы с настройкой ЧПУ в mod_rewrite - Apache, htaccess
Уже не первый День и не первый раз пытаюсь осилить это ВЕЛИКОЛЕПНЫЙ модуль, но походу без посторонней помощи, более опытных специалистов...

Реализация ЧПУ на сайте (mod_rewrite) - Apache, htaccess
Всем доброго времени суток. В общем, не хватает нервов уже на этот mod_rewrite и htaccess,поэтому пишу сюда. Подскажите,как правильно...

Настройка mod_rewrite - Apache, htaccess
Курю второй день mod_rewrite, но не получается, хоть тресни. Необходимо динамические странички вида http://site.su/aaa/?artwork=one или...

Настройка .htaccess mod_rewrite - Apache, htaccess
Добра всем! Есть ссылка вида: sait.ru/urlimg.php?id=1&amp;url=2 Скрипт: if (isset($_GET)){ echo &quot;Yes id!&quot;; $ID_user =...


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

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

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