Скрыть параметр GET из URL

Как скрыть параметры URL GET ( http://domain.com/MyFirstYii/page?view=about ). Я искал много сообщений. Все они говорят о переписывании и диспетчере URL-адресов, но я не мог добиться того, чего хочу. 🙁

Мой сценарий,

Я просто хочу скрыть параметры URL GET.

Например:

http://domain.com/MyFirstYii/page***?view=about*** 

Я хотел скрыть ***?view=about*** .

Затем URL-адрес должен выглядеть так: http://domain.com/MyFirstYii/page . Другие страницы вроде этого http://domain.com/MyFirstYii/post . Простыми словами мои параметры GET должны действовать как параметры POST.

Заранее спасибо.

Редактировать:

Я хочу создать некоторые правила в URLManager , но какие правила скроют параметр GET.

\ w в regexp означает символ "word", и такая часть url, как "my-prety-page", не будет соответствовать. Чтобы скрыть параметры GET, вы должны улучшить свои правила urlManager. Вы можете написать такое правило для страниц, используя URL-адреса SEF:

 '<controller:\w+>/<id:\d+>/<title:[^\/]*>/*' => '<controller>/view' 

В этом случае, когда вы вводите URL-адрес

 http://example.com/page/12/my-prety-title 

контроллер страницы будет вызываться для выполнения действия вида с идентификатором и заголовком в качестве аргументов. То же самое, если вы вводите этот URL:

 http://example.com/page/view?id=12&title=my-prety-title 

Последняя часть /* в правиле позволяет сохранить дополнительные параметры. Например, если ваш адрес

 http://example.com/user/55/john-doe-junior/foo/bar/ 

в actionView вы можете написать

 echo '<pre>' ; print_r($_GET); echo '</pre>' ; die(); 

и вы увидите

 Array ( [id] => 55 [title] => john-doe-junior [foo] => bar ) 

раскомментируйте эту строку из main.php

 'UrlManager' => массив (
                         'UrlFormat' => 'Путь',
                         'ShowScriptName' => ложно,
                         'Правила' => массив (
                                 'MyFirstYii / запись / <вид>' => 'MyFirstYii / запись', 
                                 '<Контроллер: \ W +> / <идентификатор: \ D +>' => '<контроллер> / вид',
                                 '<Контроллер: \ W +> / <действие: \ W +> / <идентификатор: \ D +>' => '<контроллер> / <действие>',
                                 '<Контроллер: \ W +> / <действие: \ ш +>' => '<контроллер> / <действие>',
                         ),
                 ),

И поместите файл .htaccess в корневую директорию проекта и напишите следующий код

 RewriteEngine on

 # Если существует каталог или файл, используйте его напрямую
 RewriteCond% {REQUEST_FILENAME}! -f
 RewriteCond% {REQUEST_FILENAME}! -d

 # в противном случае переслать его в index.php
 RewriteRule.  index.php

Добавьте это правило url в начало своих правил URL:

 'page/<view:\w>' => 'user/page' 

Я предполагаю следующее:

  • имя контроллера: UserController
  • название действия: actionPage

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

UPDATE: имя фиксированного контроллера на основе комментария

UPDATE2:

Если вы хотите, чтобы это работало для всех действий в вашем контроллере, используйте:

 '<action:\w>/<view:\w>' => 'user/<action>' 

Если вы собираетесь использовать GET и нуждаетесь в этом параметре, вы не можете скрыть его, так как это работает GET. Если вам действительно нужно скрыть этот параметр, вы должны переключиться на POST, так как тогда параметры будут передаваться в полезной нагрузке запроса, а не в URL-адресе.

используйте метод post вместо get …. это лучшее и эффективное решение.

следить за вашим запросом проверить этот сайт:

[Http://pure-essence.net/2007/06/29/simple-php-path-rewrite/]