Форум программистов, компьютерный форум, киберфорум
Наши страницы
Apache, htaccess
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
ICEBERG@
17 / 17 / 2
Регистрация: 20.06.2010
Сообщений: 592
1

RewriteRule

20.05.2012, 19:25. Просмотров 1328. Ответов 19
Метки нет (Все метки)

Никак не могу разобрать как это работает. Сколько примеров не смотрел ничего не получается. Подскажите кто знает нормальный справочник или на примере.

http://tester.ДОМЕН.net
index.php
PHP
1
2
3
4
if (isset($_GET['a'],$_GET['b'],$_GET['c']))
{ echo $_GET['a']." ".$_GET['b']." ".$_GET['c']; }
<hr>
<a target='_self' href='?a=abc&b=123&c=a1'>Click</a>
.htaccess в той же директории.

Что я должен вписать .htaccess, что бы в строке не было всех переменных как сейчас.
http://tester.ДОМЕН.net/?a=abc&b=123&c=a1
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2012, 19:25
Ответы с готовыми решениями:

RewriteCond влияет толко для один, следушчи RewriteRule. можно как-то превишать количество RewriteRule
здраствуите, вот что интересно, сделаю mod_rewrite и для етого в .htaccess...

RewriteRule
Прошу помощи. Не знаю как сделать так что бы работала вот эта строка со знаком...

RewriteRule
AddDefaultCharset utf-8 RewriteEngine on RewriteRule ^(.+)/ $1\.php ...

RewriteRule
Здравствуйте. Есть файл .htaccess: RewriteEngine On RewriteRule...

о RewriteRule
пытаюсь на своем сайте сделать ЧПУ , все страницы меняются 1й переменной либо...

19
Sergio Aguero
451 / 442 / 21
Регистрация: 11.04.2012
Сообщений: 2,074
20.05.2012, 19:31 2
Цитата Сообщение от ICEBERG@ Посмотреть сообщение
Что я должен вписать .htaccess, что бы в строке не было всех переменных как сейчас.
Или все перенаправляешь на индекс.пхп и дальше уже обрабатываешь собственным скриптом или как-то вот так)
PHP
1
2
3
4
RewriteEngine On
RewriteBase /
 
RewriteRule ^([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)?\.htm$ index.php?a=$1&b=$2&c=$3
Ссылку заменить на
HTML5
1
<a target='_self' href='/abc/123/a1.htm'>Click</a>
0
Para bellum
Эксперт PHP
4187 / 3117 / 1010
Регистрация: 06.01.2011
Сообщений: 9,091
20.05.2012, 19:34 3
Ну, если у вас может быть в URL только три параметра, то вроде так:
Код
RewriteBase /
RewriteEngine on  
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

#Тут основной реврайт
RewriteRule ^([a-z0-9]*)\/?(([a-z0-9]*))?\/?(([a-z0-9]*))?\/?$ index.php?a=$1&b=$3&c=$5
Ссылка: http://tester.ДОМЕН.net/abc/123/a1/
0
sedandrey
15 / 15 / 2
Регистрация: 01.05.2012
Сообщений: 55
20.05.2012, 19:34 4
можно поподробнее какой результат должен быть
может просто использовать
PHP
1
$_POST
?
0
ICEBERG@
17 / 17 / 2
Регистрация: 20.06.2010
Сообщений: 592
20.05.2012, 19:49  [ТС] 5
Ни один вариант не сработал...

http://tester.ДОМЕН.net/?a=abc&b=123&c=a1

Катастрофа...)
0
sedandrey
15 / 15 / 2
Регистрация: 01.05.2012
Сообщений: 55
20.05.2012, 19:52 6
если задача будет сформулирована по четче может будет решение
0
ICEBERG@
17 / 17 / 2
Регистрация: 20.06.2010
Сообщений: 592
20.05.2012, 20:01  [ТС] 7
Цитата Сообщение от sedandrey Посмотреть сообщение
если задача будет сформулирована по четче может будет решение
Что именно Вам нужно знать?
Я составил простой пример, что бы понять как это работает дальше уже буду внедрять на сайт заменяя реальные переменные.

Конечна цель убрать максимум информации из адресной строки. Не для красоты, а больше для безопасности.
0
Para bellum
Эксперт PHP
4187 / 3117 / 1010
Регистрация: 06.01.2011
Сообщений: 9,091
20.05.2012, 20:14 8
Цитата Сообщение от ICEBERG@ Посмотреть сообщение
Ни один вариант не сработал...
http://tester.ДОМЕН.net/?a=abc&b=123&c=a1
Катастрофа...)
Как это не сработал? Мой вариант 100% рабочий. Попробуйте .htaccess закинуть в корень сайта, и в файле index.php прописать:
PHP
1
2
3
<?php
print_r($_GET);
?>
И перейти по адресу: http://tester.ДОМЕН.net/abc/123/a1/
Выведет:
Array ( [a] => abc [b] => 123 [c] => a1 )
0
sedandrey
15 / 15 / 2
Регистрация: 01.05.2012
Сообщений: 55
20.05.2012, 20:24 9
как я и сказал выше можно не заморачиватьсся с адресной строкой а выдать все через POST
HTML5
1
2
3
4
5
6
<form method=POST>
  <input type=hidden name=a value=123>
  <input type=hidden name=b value=abc>
  <input type=hidden name=c value=a1>
  <input type=submit name=save value=Click>
</form>
0
ICEBERG@
17 / 17 / 2
Регистрация: 20.06.2010
Сообщений: 592
20.05.2012, 20:33  [ТС] 10
Тогда в чем может быть проблема?
.htaccess в корневом каталоге поддомена на котором я тестирую, там же и index.php

Добавлено через 5 минут
Цитата Сообщение от Lyodik Посмотреть сообщение
Как это не сработал? Мой вариант 100% рабочий. Попробуйте .htaccess закинуть в корень сайта, и в файле index.php прописать:
PHP
1
2
3
<?php
print_r($_GET);
?>
И перейти по адресу: http://tester.ДОМЕН.net/abc/123/a1/
Выведет:
Да если вписать в адрес то что вы пишете то выдает переменные но кто же пишет переменные в ручную?
Почему при клике на ссылку в адресной строке появляются все переменные?
0
Para bellum
Эксперт PHP
4187 / 3117 / 1010
Регистрация: 06.01.2011
Сообщений: 9,091
20.05.2012, 20:36 11
Цитата Сообщение от sedandrey Посмотреть сообщение
как я и сказал выше можно не заморачиватьсся с адресной строкой а выдать все через POST
sedandrey, может быть ICEBERG@ хочет выводить статьи и т.п. а метод POST в таком случае не подойдёт

Добавлено через 1 минуту
Цитата Сообщение от ICEBERG@ Посмотреть сообщение
Да если вписать в адрес то что вы пишете то выдает переменные но кто же пишет переменные в ручную?
А как выхотели? Чтобы они неизвестно откуда появлялись?
0
ICEBERG@
17 / 17 / 2
Регистрация: 20.06.2010
Сообщений: 592
20.05.2012, 20:42  [ТС] 12
Цитата Сообщение от Lyodik Посмотреть сообщение
sedandrey, может быть ICEBERG@ хочет выводить статьи и т.п. а метод POST в таком случае не подойдёт

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

А как выхотели? Чтобы они неизвестно откуда появлялись?
Что значит из воздуха?..)))
При клике на ссылку передаю переменные.
HTML5
1
<a target='_self' href='?a=abc&b=123&c=a1'>Click</a>
Я что должен это вручную набирать в url?
0
Para bellum
Эксперт PHP
4187 / 3117 / 1010
Регистрация: 06.01.2011
Сообщений: 9,091
20.05.2012, 20:45 13
Цитата Сообщение от ICEBERG@ Посмотреть сообщение
Я что должен это вручную набирать в url?
Конечно же нет ))) Просто прописывайте такой адрес:
HTML5
1
<a target='_self' href='/abc/123/a1/'>Click</a>
0
sedandrey
15 / 15 / 2
Регистрация: 01.05.2012
Сообщений: 55
20.05.2012, 20:49 14
я все же не понимаю нужно скрыть данные или переменные или сделать ЧПУ?

первое в POST

Второе в base64

Третье с .htaccess
0
ICEBERG@
17 / 17 / 2
Регистрация: 20.06.2010
Сообщений: 592
20.05.2012, 20:51  [ТС] 15
Цитата Сообщение от Lyodik Посмотреть сообщение
Конечно же нет ))) Просто прописывайте такой адрес:
HTML5
1
<a target='_self' href='/abc/123/a1/'>Click</a>
Только не это...)) Мне что весь код переделывать? Он сам не может распознать и переписать?

Там же десятки переменных, и пара десятков страниц с разными переменными. Откуда он будет знать кому их присвоить? Для каждого случая правила писать?
0
Para bellum
Эксперт PHP
4187 / 3117 / 1010
Регистрация: 06.01.2011
Сообщений: 9,091
20.05.2012, 20:59 16
Цитата Сообщение от sedandrey Посмотреть сообщение
я все же не понимаю нужно скрыть данные или переменные или сделать ЧПУ?
sedandrey, а заголовок темы на что похож? ))
0
sedandrey
15 / 15 / 2
Регистрация: 01.05.2012
Сообщений: 55
20.05.2012, 21:02 17
Ну а если вы решили, что толко RewriteRule может помочь, вам даны два варианта и любой из них верный примите к сведению и попробуйте переписатьь код а не
Цитата Сообщение от ICEBERG@ Посмотреть сообщение
Только не это...)) Мне что весь код переделывать? Он сам не может распознать и переписать?
0
Para bellum
Эксперт PHP
4187 / 3117 / 1010
Регистрация: 06.01.2011
Сообщений: 9,091
20.05.2012, 21:03 18
Цитата Сообщение от ICEBERG@ Посмотреть сообщение
Только не это...)) Мне что весь код переделывать? Он сам не может распознать и переписать?
Нет, сам он никак не распознает. Код, что я дал, вот это:
HTML5
1
/abc/123/a1/
Преобразует вот в это:
HTML5
1
?a=abc&b=123&c=a1
И вы работайте с ними как и раньше.
1
ICEBERG@
17 / 17 / 2
Регистрация: 20.06.2010
Сообщений: 592
20.05.2012, 21:31  [ТС] 19
Похоже я здорово переоценил эту функцию. Это можно и средствами php сделать или с самого начала писать из расчета на Rewrite.
0
Para bellum
Эксперт PHP
4187 / 3117 / 1010
Регистрация: 06.01.2011
Сообщений: 9,091
21.05.2012, 14:41 20
Цитата Сообщение от ICEBERG@ Посмотреть сообщение
Это можно и средствами php сделать
Средствами php вы этого не сделаете.
Цитата Сообщение от ICEBERG@ Посмотреть сообщение
или с самого начала писать из расчета на Rewrite
Ну да, с самого начала. Ведь всё равно нужно ссылки прописывать. А прописать их с рассчётом на RewriteRule даже легче, чем писать ссылки с GET переменными
0
21.05.2012, 14:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2012, 14:41

RewriteRule
Помогите написать RewriteRule для поиска. search.php &lt;!DOCTYPE HTML...

RewriteRule
Люди помогите сделать в htaccess код Мне нужно чтобы из такого урл ...

RewriteRule
Всем доброго дня! Покажите как на практике можно заенить URL ...


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

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

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