Jump to content
  • 0

ЧПУ mod_rewrite


selevit
 Share

Question

Всем доброго времени суток, объясните пожалуйста, как сделать так, чтобы url вида

http://www.code-live.ru/path.php?cat=path2

Преобразовывалась в такую

http://www.code-live.ru/path/path2

прописал в htaccess вот что

RewriteBase /
RewriteRule ^(.*)$ /index.php?category=$1 [L,QSA]
RewriteRule ^/sources(.*)$ /sources.php?category=$1 [L,QSA]

первое работает нормально, а во втором идет ошибка 404

хотелось бы еще узнать, как с помощью php искусственно сгенерировать такие ссылки, но чтобы $_GET сохранялся и шла выборка из базы

Заранее спасибо ;)

Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0

Добрый день.

Не стал плодить еще одну тему, тем более, что мой вопрос вполне соответствует названию текущей.

В общем, необходимо разбирать строки адресов, состоящие из одного\нескольких каталогов и названия html-страницы.

Пример:

ru/index.html

ru/subru/about.html и т.п.

Нужно получить:

1. Путь до страницы (полный путь от корня)

2. Имя страницы (без расширения)

Какое правило использую:

RewriteRule ^([^/]*/)*([^/]+).html$ index.php?catpage=$1&whatpage=$2

Проблема:

запоминается только последний каталог в пути до страницы.

Иллюстрация:

строка запроса: ru/subru/main.html

результат обработки var_dump($_GET):

array(2) {
["catpage"]=>
string(6) "subru/"
["whatpage"]=>
string(4) "main"
}

Необходимо: catpage = "ru/subru/"

Собственно, вопрос: как подкорректировать правило, чтобы запоминался весь путь?

UPD: методом "полунаучного тыка" составил требуемый шаблон:

RewriteRule ^(.*/)*([^/]*).html$ index.php?catpage=$1&whatpage=$2

Но возникает другой вопрос: Как учесть вариант, когда не указывается имя файла? (например: ru/subru/ - в таком случае необходима пустая whatpage)

UPD: второй вопрос тоже решил - просто добавил следом еще одно правило:

RewriteRule ^(.*/)*$ index.php?catpage=$1

Edited by Takker
Link to comment
Share on other sites

  • 0

ап, вопрос по мод реврайту:

если у нас к примеру есть страница

RewriteRule ^([^/]*/)*([^/]+).html$ index.php?catpage=$1&whatpage=$2

значит все скрипты что используются на этой странице (js) получают путь ru/subru/

...а на странице скрипты берутся из разных папок типа:

ru/js/script.js

ru/js/subru/script.js

js/ru/script.js

как в этом случае написать мод для жс файлов?

Edited by Simon
Link to comment
Share on other sites

  • 0
www.domain.com/registration/page1/test/

The requested URL /registration/page1/test/js/functions.js was not found on this server.
The requested URL /registration/page1/test/js/other/verify.js was not found on this server.
The requested URL /registration/page1/test/other/js/verify.js was not found on this server.

сами скрипты находятся в www.domain.com/js/... и www.domain.com/other/js/...

нет тут никакой физики...)

Link to comment
Share on other sites

  • 0

ну вот смотри, у меня к примеру js лежит тут:


<script type="text/javascript" src="http://mysite.ru/js/tiny_mce.js"></script>

а адрес может выглядеть так:

http://mysite.ru/adm/edit/new_razdel

и так:

http://mysite.ru/adm/profil/edit

да хоть как..., но js подгружается везде.

или я чего то недопонял?

Link to comment
Share on other sites

  • 0

ну вот смотри, у меня к примеру js лежит тут:


<script type="text/javascript" src="http://mysite.ru/js/tiny_mce.js"></script>

а адрес может выглядеть так:

http://mysite.ru/adm/edit/new_razdel

и так:

http://mysite.ru/adm/profil/edit

да хоть как..., но js подгружается везде.

или я чего то недопонял?

да и если сделать по вашему примеру то скрипты получат директорию: http://mysite.ru/adm/edit/new_razdel/functions.js ...и тогда скрипты работать не будут

Link to comment
Share on other sites

  • 0

ну у меня их не так много, хотя с точки зрения нагрузки это может и не есть гуд, а по другому если только проверку делать если пришла гетом переменная, то подключать такой-то скрипт, но в любом случае все запросы надо направлять на index.php.

Link to comment
Share on other sites

  • 0

ну у меня их не так много, хотя с точки зрения нагрузки это может и не есть гуд, а по другому если только проверку делать если пришла гетом переменная, то подключать такой-то скрипт, но в любом случае все запросы надо направлять на index.php.

хорошо но как быть в таком случае как мой пример?...

выражение делаю след. образом:

RewriteRule ^activation/(.*)/(.*).css$ $2.css [L]

RewriteRule ^activation/(.*)/(.*).js$ js/$2.css [L]

RewriteRule ^activation/(.*)/([a-zA-Z0-9]+)$ index.php?do=activation&email=$1&key=$2[L]

скрипты получают директорию js/название.js ... но есть и скрипты которые в не папки js... и тогда они не работают

ах блин...я понял... у меня просто идет так:

<script type="text/javascript" src="js/slide/jquery.mousewheel.min.js"></script>

<script type="text/javascript" src="jquery.selectbox-0.5.js"></script>

если приписать и домен тогда все работает...а если без домена то трабла

Edited by Simon
Link to comment
Share on other sites

  • 0

<script type="text/javascript" src="js/slide/jquery.mousewheel.min.js"></script>

<script type="text/javascript" src="jquery.selectbox-0.5.js"></script>

ну да, тут получается что когда ты находишься в директории типа:

http://mysite.ru/adm/edit/new_razdel

то скрипты будут загружаться относительно этой директории:

<script type="text/javascript" src="http://mysite.ru/adm/edit/new_razdel/js/slide/jquery.mousewheel.min.js"></script>

а если путь будет полный, то скрипты грузятся из нужной директории.

теперь понимаешь почему так?

  • Like 1
Link to comment
Share on other sites

  • 0

ну да, тут получается что когда ты находишься в директории типа:

http://mysite.ru/adm/edit/new_razdel

то скрипты будут загружаться относительно этой директории:

<script type="text/javascript" src="http://mysite.ru/adm/edit/new_razdel/js/slide/jquery.mousewheel.min.js"></script>

а если путь будет полный, то скрипты грузятся из нужной директории.

теперь понимаешь почему так?

дааа спасибо....пропали все глобальные проблемы )...а мне блин приходилось для каждой директории менять путь стилей и скриптов %)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy