Jump to content
  • 0

.htaccess


Villain
 Share

Question

Здравствуйте, таких тем было много, я знаю, но не одна мне не помогла решить проблему.

Ссылка выглядит так:

http://www.domain.ru/?menu=code&page=2

Хочу чтобы выглядело:

http://www.domain.ru/code/1 (номер страницы)

Пишу код для этого:

RewriteEngine on
RewriteRule ^([A-Za-z_0-9]+)/([0-9]+)/?$ index.html?menu=$1&page=$2

Сначала ссылку оставлял как href="?menu=code&page=$st", потом менял чтобы было href="code/$st". Не получается.

Edited by Villain
Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

Явно слэш пропустили между двумя выражениями

Я не знаю как так пропустил, я вариантов много пробовал. Поставил слэш, ничего не изменилось.

Если ссылку оставить вида ?menu и тд то ничего не меняется в адресной строке. Если ссылка будет вида code/2 то пишет что нет такой страницы.

Link to comment
Share on other sites

  • 0

Я не знаю как так пропустил, я вариантов много пробовал. Поставил слэш, ничего не изменилось.

Если ссылку оставить вида ?menu и тд то ничего не меняется в адресной строке. Если ссылка будет вида code/2 то пишет что нет такой страницы.

наверное потому что: index.html ?

Link to comment
Share on other sites

  • 0

а модуль mod_rewrite подключен?

В тех. поддержке сказали, что подключен.

наверное потому что: index.html ?

Исправил, но не работает, выглядит вот так:


RewriteEngine on
RewriteBase /
RewriteRule ^([A-Za-z_0-9]+)/([0-9]+)$ index.php?menu=$1&page=$2 [NC,L]

Link to comment
Share on other sites

  • 0

1) вы уверены что [NC, L] нужно тут вам? правило стоит последним? потому что:

NC - no case - не различать в урлах прописные и строчные буквы

L - last - после этой директивы дальнейший анализ директив RewriteRule останавливается и прочие директивы не исполняются

вот тут в конце поста есть описание именно такой задачи как у вас.

Link to comment
Share on other sites

  • 0

1) вы уверены что [NC, L] нужно тут вам? правило стоит последним? потому что:

NC - no case - не различать в урлах прописные и строчные буквы

L - last - после этой директивы дальнейший анализ директив RewriteRule останавливается и прочие директивы не исполняются

вот тут в конце поста есть описание именно такой задачи как у вас.

Да, уверен. Я пытался по этой статье сделать ранее, почему то не получалось, вылетало что не существует страницы. Сейчас получилось, точнее нет, теперь на страницу переходит с адресом

http://www.domain.ru/code/1

, но там нет картинок, размеры не соблюдаются, что с этим делать? Хотя код исходный в порядке. И сменив на такой вид ссылки я не смогу отслеживать по пхп вот так:

if ($_GET['menu']=="code")

?

Edited by Villain
Link to comment
Share on other sites

  • 0

Да, уверен. Я пытался по этой статье сделать ранее, почему то не получалось, вылетало что не существует страницы. Сейчас получилось, точнее нет, теперь на страницу переходит с адресом

http://www.domain.ru/code/1

, но там нет картинок, размеры не соблюдаются, что с этим делать? Хотя код исходный в порядке. И сменив на такой вид ссылки я не смогу отслеживать по пхп вот так:

if ($_GET['menu']=="code")

?

нужно стили прописывать вот так:


<link href="http://<?=$_SERVER['HTTP_HOST']."/?>style.css" rel="stylesheet" type="text/css" media="screen" />

тогда и картинки будут и стили слетать не будут.

на счет отслеживания, так в htaccess вы передаете эту переменную menu?

Link to comment
Share on other sites

  • 0

Получается все писать абсолютными путями, всегда считал что это плохо.

RewriteRule ^([A-Za-z_0-9]+)/([0-9]+)/?$ index.php?menu=$1&page=$2, я полагаю это значит что я передаю переменную menu?

Edited by Villain
Link to comment
Share on other sites

  • 0

Получается все писать абсолютными путями, всегда считал что это плохо.

RewriteRule ^([A-Za-z_0-9]+)/([0-9]+)/?$ index.php?menu=$1&page=$2, я полагаю это значит что я передаю переменную menu?

почему плохо? в любом случае вы не зависите от принадлежности доменного имени, тут за вас это делает массив который передаст имя домена: $_SERVER['HTTP_HOST'].

да, переменная меню передается и вроде все правильно..., но вам же нужно получить конкретное значение переменной menu, верно? и оно равно code, тогда надо так:


RewriteRule ^code/([0-9]+)/?$ index.php?menu=code&page=$1

и значение code должно присутствовать в ссылке:


http://site.ru/code/2

Link to comment
Share on other sites

  • 0

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

http://www.domain.ru/?menu=code&page=2 
Я добавяю переменную в зависимости от нажатой копки(переключение между виджетами для комментариев)
http://www.domain.ru/?menu=code&page=2&ch=ds(или vk или fb)

Теперь когда ссылка выглядит http://site.ru/code/2 нажимая на кнопку получается адрес http://site.ru/code/2?ch=vk и переменная ch теперь не обрабатывается, и то что должно выводиться не выводиться.

Link to comment
Share on other sites

  • 0

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

http://www.domain.ru/?menu=code&page=2 
Я добавяю переменную в зависимости от нажатой копки(переключение между виджетами для комментариев)
http://www.domain.ru/?menu=code&page=2&ch=ds(или vk или fb)

Теперь когда ссылка выглядит http://site.ru/code/2 нажимая на кнопку получается адрес http://site.ru/code/2?ch=vk и переменная ch теперь не обрабатывается, и то что должно выводиться не выводиться.

parse_url() в помощь.

Link to comment
Share on other sites

  • 0

Всем доброго времени суток!)

У меня две проблемы..Не могу сделать ссылки без .html или .php

И второе вот код

CODE (htmlphp):

скопировать код в буфер обмена

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/

RewriteRule ^index\.html$ http://za-zabor.ru [R=301,L]

Он пересылает всегда на доменное имя без всяких индекс.html А как мне сделать также только в других каталогах?

Я принимаю ответ ссылками на другие темы.

Edited by doox911
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