[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Mod_rewrite
Stasonix
ссылка получается вот такая:

mysite.loc/index.php?cat=PHP&article=obrabotka_formy

как это переделать на:

mysite.loc/php/obrabotka_formy

???



Спустя 23 минуты, 44 секунды (5.07.2012 - 07:50) phz написал(а):
Вот хороший сервис http://www.generateit.net/mod-rewrite/

Спустя 22 минуты, 49 секунд (5.07.2012 - 08:13) Stasonix написал(а):
Воспользовался:

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)\$ /index.php?cat=$1&article=$2 [L]


упс, mod_rewrite что-то у меня вообще не работает, сам модуль подключен, apache ни ругается по крайней мере, но увы, это правило не срабатывает.

А какое-нть для теста очень маленькое правило можете подсказать? ну там хотя бы только index.php убрать что ли?

Спустя 16 минут, 53 секунды (5.07.2012 - 08:30) Stasonix написал(а):
нда... что-то тыкаю, тыкаю я это правило в .htaccess, но все без толку.

Спустя 26 минут, 26 секунд (5.07.2012 - 08:56) Stasonix написал(а):
пардон, тупо было uppercase, это опечатка:

mysite.loc/index.php?cat=PHP&article=obrabotka_formy


а вообще вот так выглядит ссылка:

<a href='index.php?cat=".strtolower($name)."&article=".translitIt($value)."'>".$value."</a>


а вот так правило:

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)\$ index.php?cat=$1&article=$2 [L]


Увы... (не хочет изменять url).

Спустя 2 дня, 8 часов, 47 минут, 3 секунды (7.07.2012 - 17:44) Stasonix написал(а):
в общем в итоге я пришел к тому что сработало у меня такое правило:



RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)$ index.php?cat=$1&article=$2 [L,QSA]



но вопрос теперь в другом, а как убрать &article=$2 ?

Объясняю почему, у меня такой скрипт:



if (isset($_GET['cat']) and isset($_GET['article']))
{

echo "categories with articles";

}
elseif (isset($_GET['cat']) and !isset($_GET['article']) or empty($_GET['article']))
{

echo "it's Only categories";

}
else
{

echo "main.page";

}



казалось бы убрать &article=$2 легко, вот такое правило примерно выходит:



RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)$ index.php?cat=$1&article=$2 [L,QSA]

RewriteRule ^([^/]*)$ index.php?cat=$1 [L]



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

Цитата
it's Only categories



т.е. правило в буквальном смысле сбивает мне главную страницу, как этого избежать?

Спустя 14 часов, 12 минут, 15 секунд (8.07.2012 - 07:56) Stasonix написал(а):
Уже не знаю что и делать, может я с самого начала все неправильно задумал, создал test.loc.rar для примера, там одно правило срабатывает, а второе нет, я его закомментил, так как оно делает редирект главной страницы, а по сути нужно то же что и с ссылкой на статью делать.

Спустя 22 минуты, 40 секунд (8.07.2012 - 08:18) Stasonix написал(а):
ууу, походу у меня только такой выход:

RewriteRule ^php|jquery|ajax$ index.php?cat=$1 [L]


Только теперь при создании категории прийдется на лету .htaccess переписывать в php, интересно это вообще реально и не слетит ли сайт при этом?

Спустя 9 минут, 53 секунды (8.07.2012 - 08:28) vital написал(а):
Единственный нормальный роут это
RewriteRule .* index.php?params=$i [L,NC,QSA]

и разбор роута в $params в index.php.

Все остальное от лукавого. Сделайте так и не дурите голову ни себе ни другим.

Спустя 13 минут, 22 секунды (8.07.2012 - 08:42) Stasonix написал(а):
RewriteRule .* index.php?params=$i [L,NC,QSA]


при

if (!isset($_GET['params']))
{
echo "not isset params <br />";
echo "<a href='php'>php</a>";

}
else
{

echo "params is TRUE <br />";
$params = $_GET['params'];
echo "<pre>";
print_r($params);


}


выводит всегда params is TRUE и $i, не пойму немного. все что мне надо, так это $_GET['cat'] получить.

Спустя 12 минут, 25 секунд (8.07.2012 - 08:54) Stasonix написал(а):
просто у меня все самые главные события (дей-я) происходят в файле index.php, других файлов просто нету, есть пару ссылок, одна выводит саму статью, другая только название категории. естественно это все легко делается при обычных url'ах, т.е. index.php?cat=php?article=arrays и index.php?cat=php, эти геты легко передаются (без rewriteRules) и с ними можно делать все что хочешь, но url тогда в адресной строке выглядит как-то не оч, вот и пытаюсь "преобразить".

Спустя 1 час, 11 минут, 5 секунд (8.07.2012 - 10:05) Stasonix написал(а):
все, закрываю тему, дей-но лучше одну строку анализировать:

RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ index.php?params=$1 [L]


а в index.php уже explode'ить $_GET['params'];

Спустя 21 минута, 39 секунд (8.07.2012 - 10:27) killer8080 написал(а):
<IfModule mod_rewrite.c>
# включаем реврайты
RewriteEngine On

# если запрошенный урл не является файлом
RewriteCond %{REQUEST_FILENAME} !-f
# если запрошенный урл не является директорией
RewriteCond %{REQUEST_FILENAME} !-d
# все несуществующие запросы направляем в index.php
# QSA нужен для того чтоб не потерять реальные гет параметры, если они были в запросе
RewriteRule .* index.php [L,QSA]

</IfModule>

Я в упор не понимаю, зачем нужно плодить искусственный гет параметр, когда можно работать напрямую с $_SERVER['REQUEST_URI']?

Спустя 3 минуты, 18 секунд (8.07.2012 - 10:30) Stasonix написал(а):
$_SERVER['REQUEST_URI']?

ohmy.gif laugh.gif

Спустя 1 минута, 52 секунды (8.07.2012 - 10:32) killer8080 написал(а):
Цитата (Stasonix @ 8.07.2012 - 10:30)
$_SERVER['REQUEST_URI']?

а что тебя так удивило? smile.gif

Спустя 2 минуты, 46 секунд (8.07.2012 - 10:35) Stasonix написал(а):
Я про него вообще забыл, читал в книгах, но так и не использовал, не обращал просто внимания. Упустил это из виду, и через черный ход делаю.

Спустя 2 минуты, 31 секунда (8.07.2012 - 10:37) killer8080 написал(а):
Цитата (Stasonix @ 8.07.2012 - 10:35)
Упустил это из виду, и через черный ход делаю.

бывает smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.