Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/56: Рейтинг темы: голосов - 56, средняя оценка - 4.80
strongK
1 / 1 / 2
Регистрация: 01.02.2014
Сообщений: 65
1

Как убрать GET параметры в адресной строке

01.02.2014, 13:59. Просмотров 11581. Ответов 16
Метки нет (Все метки)

Здравствуйте!
Возможно преобразовать ссылку test1.ru/index.php?page=1 в test1.ru/index/page/1/

Скрипт постраничной навигации

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=index.php? page=1>Первая</a>  <a href=index.php? page='. ($page - 1) .'>Предыдущая</a>  ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = '  <a href=index.php?page='. ($page + 1) .'>Следующая</a>  <a href=index.php?page=' .$total. '>Последняя</a>';
 
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href=index.php?page='. ($page - 5) .'>'. ($page - 5) .'</a>  ';
if($page - 4 > 0) $page4left = ' <a href=index.php?page='. ($page - 4) .'>'. ($page - 4) .'</a>  ';
if($page - 3 > 0) $page3left = ' <a href=index.php?page='. ($page - 3) .'>'. ($page - 3) .'</a>  ';
if($page - 2 > 0) $page2left = ' <a href=index.php?page='. ($page - 2) .'>'. ($page - 2) .'</a>  ';
if($page - 1 > 0) $page1left = '<a href=index.php?page='. ($page - 1) .'>'. ($page - 1) .'</a>  ';
 
if($page + 5 <= $total) $page5right = '  <a href=index.php?page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = '  <a href=index.php?page='. ($page + 4) .'>'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = '  <a href=index.php?page='. ($page + 3) .'>'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = '  <a href=index.php?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = '  <a href=index.php?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
Подскажите пожалуйста, что надо прописать в .htaccess и изменить в php коде
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2014, 13:59
Ответы с готовыми решениями:

Как убрать расширение картинки в адресной строке?
Всем доброго времени суток! Подскажите, как из вида ?pic=3.jpg сделать ?pic=3 Вот так получаю...

Убрать расширение php в адресной строке
Всем привет! Прочитал, что это можно сделать при помощи файла .htaccess. Создал файл в корневом...

Как убрать id из адресной строки
Привет. Появился такой вопрос. Есть ссылка - profile2 (2-это id пользователя). Я сократил ссылку...

Как убрать id из адресной строки?
Привет всем! Есть ссылка profile?id=2 как сделать сделать ее просто - profile?

Как отключить в хроме поиск в адресной строке?
Поставил Open Server, создал в папке domains папку с именем моего домена, перезапустил сервер, пишу...

16
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16767 / 6654 / 869
Регистрация: 12.06.2012
Сообщений: 19,902
Завершенные тесты: 1
01.02.2014, 14:29 2
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href="/index/page/1/">Первая</a>  <a href="/index/page/'. ($page - 1) .'/">Предыдущая</a>  ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = '  <a href="/index/page/'. ($page + 1) .'/">Следующая</a>  <a href="/index/page/' .$total. '/">Последняя</a>';
 
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href="/index/page/'. ($page - 5) .'/">'. ($page - 5) .'</a>  ';
if($page - 4 > 0) $page4left = ' <a href="/index/page/'. ($page - 4) .'/">'. ($page - 4) .'</a>  ';
if($page - 3 > 0) $page3left = ' <a href="/index/page/'. ($page - 3) .'/">'. ($page - 3) .'</a>  ';
if($page - 2 > 0) $page2left = ' <a href="/index/page/'. ($page - 2) .'/">'. ($page - 2) .'</a>  ';
if($page - 1 > 0) $page1left = '<a href="/index/page/'. ($page - 1) .'/">'. ($page - 1) .'</a>  ';
 
if($page + 5 <= $total) $page5right = '  <a href="/index/page/'. ($page + 5) .'/">'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = '  <a href="/index/page/'. ($page + 4) .'/">'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = '  <a href="/index/page/'. ($page + 3) .'/">'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = '  <a href="/index/page/'. ($page + 2) .'/">'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = '  <a href="/index/page/'. ($page + 1) .'/">'. ($page + 1) .'</a>'
.htaccess
Код
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^index/page/(\d+)/?$ index.php?page=$1 [L]
0
MickeyBlueEyes
Студент
120 / 131 / 39
Регистрация: 07.04.2011
Сообщений: 503
01.02.2014, 14:55 3
Этот скрипт страничной навигации походу будет жить вечно.
0
strongK
1 / 1 / 2
Регистрация: 01.02.2014
Сообщений: 65
01.02.2014, 15:18  [ТС] 4
Привожу код полностью, появилась ошибка в 45 строке (Parse error: syntax error, unexpected T_IF)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/* делаем выборку */
 
$num = 1;  //количество выводимых новостей 
$page = $_GET['page'];
$result00 = mysql_query("SELECT COUNT(*) FROM news");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
$total = (($posts - 1) / $num) + 1;
$total =  intval($total);
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;       
        
$query = mysql_query ("SELECT * FROM news ORDER By id DESC LIMIT $start, $num");
$row = mysql_fetch_array ($query);
do
{
echo $row['novost'];
}
while ($row = mysql_fetch_array ($query))
 
 
 
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href="/index/page/1/">Первая</a>  <a href="/index/page/'. ($page - 1) .'/">Предыдущая</a>  ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = '  <a href="/index/page/'. ($page + 1) .'/">Следующая</a>  <a href="/index/page/' .$total. '/">Последняя</a>';
 
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href="/index/page/'. ($page - 5) .'/">'. ($page - 5) .'</a>  ';
if($page - 4 > 0) $page4left = ' <a href="/index/page/'. ($page - 4) .'/">'. ($page - 4) .'</a>  ';
if($page - 3 > 0) $page3left = ' <a href="/index/page/'. ($page - 3) .'/">'. ($page - 3) .'</a>  ';
if($page - 2 > 0) $page2left = ' <a href="/index/page/'. ($page - 2) .'/">'. ($page - 2) .'</a>  ';
if($page - 1 > 0) $page1left = '<a href="/index/page/'. ($page - 1) .'/">'. ($page - 1) .'</a>  ';
 
if($page + 5 <= $total) $page5right = '  <a href="/index/page/'. ($page + 5) .'/">'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = '  <a href="/index/page/'. ($page + 4) .'/">'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = '  <a href="/index/page/'. ($page + 3) .'/">'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = '  <a href="/index/page/'. ($page + 2) .'/">'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = '  <a href="/index/page/'. ($page + 1) .'/">'. ($page + 1) .'</a>'
 
// Вывод меню если страниц больше одной
 
if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div class=\"pstrnav\">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}
0
01.02.2014, 15:18
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16767 / 6654 / 869
Регистрация: 12.06.2012
Сообщений: 19,902
Завершенные тесты: 1
01.02.2014, 15:24 5
А отсутствующую точку с запятой вы поставить не хотите?
0
strongK
1 / 1 / 2
Регистрация: 01.02.2014
Сообщений: 65
01.02.2014, 15:55  [ТС] 6
Цитата Сообщение от KOPOJI Посмотреть сообщение
А отсутствующую точку с запятой вы поставить не хотите?
Не заметил в 45 и ещё в 41 строке. Ссылки стали преобразовываться. А вот все стили, и картинки перестали подключаться. Почему так случилось?
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16767 / 6654 / 869
Регистрация: 12.06.2012
Сообщений: 19,902
Завершенные тесты: 1
01.02.2014, 15:56 7
strongK, их надо подключать от корня сайта. Т.е., например, у вас было так
HTML5
1
2
3
4
5
<link href="styles.css" rel="stylesheet" type="text/css">
.....
<img src="images/img1.jpg">
....
<a href="page1.html">page1</a>
А вам надо изменить их, соответственно, на такое
HTML5
1
2
3
4
5
<link href="/styles.css" rel="stylesheet" type="text/css">
.....
<img src="/images/img1.jpg">
....
<a href="/page1.html">page1</a>
Ну или использовать html-овский тег <base> (хотя, имхо, лучше использовать адреса от корня, как я привел пример)
0
strongK
1 / 1 / 2
Регистрация: 01.02.2014
Сообщений: 65
01.02.2014, 15:56  [ТС] 8
Цитата Сообщение от MickeyBlueEyes Посмотреть сообщение
Этот скрипт страничной навигации походу будет жить вечно.
Взял с видео урока на ютубе. Такое мне ещё пока не сделать, но навигация нужна.
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16767 / 6654 / 869
Регистрация: 12.06.2012
Сообщений: 19,902
Завершенные тесты: 1
01.02.2014, 15:57 9
З.Ы. тоже самое и с подключаемыми js-скриптами
0
strongK
1 / 1 / 2
Регистрация: 01.02.2014
Сообщений: 65
01.02.2014, 16:26  [ТС] 10
Цитата Сообщение от KOPOJI Посмотреть сообщение
strongK, их надо подключать от корня сайта.
...
Ну или использовать html-овский тег <base> (хотя, имхо, лучше использовать адреса от корня, как я привел пример)
Получилось

Я правильно понял, что одиночный " / " сразу обращается к каталогу или файлу который в корне, а "../" поднимает на один уровень выше.

И что бы добраться к корневому файлу с нижних уровней не обязательно ставить несколько ../../../ а достаточно один раз указать /
0
Para bellum
Эксперт PHP
4187 / 3117 / 1010
Регистрация: 06.01.2011
Сообщений: 9,091
01.02.2014, 16:29 11
Цитата Сообщение от strongK Посмотреть сообщение
что бы добраться к корневому файлу с нижних уровней не обязательно ставить несколько ../../../ а достаточно один раз указать /
Верно . Действует это для HTML.
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16767 / 6654 / 869
Регистрация: 12.06.2012
Сообщений: 19,902
Завершенные тесты: 1
01.02.2014, 16:47 12
Цитата Сообщение от lyod Посмотреть сообщение
Действует это для HTML.
Ну, вообще-то, не только для HTML, а вообще для всех *nix-овых путей "/" - корень, "." - текущая директория, ".." - на директорию выше.
1
strongK
1 / 1 / 2
Регистрация: 01.02.2014
Сообщений: 65
01.02.2014, 17:15  [ТС] 13
Ссылка вида test1.ru/catalog/comedy/kadry.php как убрать расширение .php чтобы было test1.ru/catalog/comedy/kadry

В файле .htaccess у меня прописано убрать GET параметры

Код
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^index/page/(\d+)/?$ index.php?page=$1 [L]
Знаю, что бы убрать расширение .php надо прописать

Код
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ $1.php

Возможно совмещение, чтоб убирались GET параметры и отсекалось .php
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16767 / 6654 / 869
Регистрация: 12.06.2012
Сообщений: 19,902
Завершенные тесты: 1
01.02.2014, 17:17 14
Код
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^index/page/(\d+)/?$ index.php?page=$1 [L]
RewriteRule ^(.*)$ $1.php [L]
?
0
strongK
1 / 1 / 2
Регистрация: 01.02.2014
Сообщений: 65
01.02.2014, 19:38  [ТС] 15
Так я пробовал

Код
Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^index/page/(\d+)/?$ index.php?page=$1 [L]
RewriteRule ^(.*)$ $1.php [L]
Внутренняя ошибка сервера.

Добавлено через 55 минут
Не одна страница не открывается когда этот код прописываю.

Добавлено через 40 минут
Ошибка в коде, где убираем php в строке:
Код
RewriteCond %{REQUEST_FILENAME} !-f
Нужно дописать, что проверяем на php:
Код
RewriteCond %{REQUEST_FILENAME}\.php -f
Сделал для каждого отдельно, и заработало:
Код
Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^index/page/(\d+)/?$ index.php?page=$1 [L]

Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
0
mifuss
0 / 0 / 0
Регистрация: 10.03.2014
Сообщений: 1
13.03.2014, 17:17 16
Здравствуйте.
есть сайт на друпал в разделе новости установили навигацию страниц, но не знаем как изменить чтобы /news?page=1 было как news/page/1 что нужно прописать?
Как понимаем нужно скрипт поменять?
0
Para bellum
Эксперт PHP
4187 / 3117 / 1010
Регистрация: 06.01.2011
Сообщений: 9,091
13.03.2014, 17:38 17
mifuss, для Вашей CMS наверняка есть уже готовые плагины для создания ЧПУ. Посмотрите на официальном сайте Drupal такое расширение.
0
13.03.2014, 17:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2014, 17:38

Как изначально задать параметр в адресной строке?
Сейчас при загрузке с домашней страницы адрес выглядит вот так: /index.php В коде задано условие,...

Как сделать, чтобы в адресной строке не отображалось расширение php?
как сделать чтоб не высвечивалась приставка php? и заходить что б можно было

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


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

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

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