php: избавиться от? p = запрос в URL-адресе?

эй, ребята, я не ищу моддвритскую вещь или что-то связанное. Я просто не уверен, что это возможно или нет?

Я использую if (isset ($ _ GET ['p'])) … проверить, что? p = что-то задано в моем url, если не $ foo = "bar"; если a? p = задано, например, p = something -> $ foo = "something". подловил?

если я вручную вводим сейчас? p = bar для моего url, строка в моем URL-адресе фактически является значением по умолчанию. Потому что, если у меня нет? P в моем url $ foo = "bar";

Интересно, если это так, я могу полностью избавиться от? P = part в моем url? если строка по умолчанию установлена ​​в переменную $ foo, я просто хочу иметь чистый url без какого-либо distractign? p = bar в моем URL-адресе.

извините за странные foo и бары, у меня не было лучшего примера;) считает матовый

if ($_GET['p'] == 'bar') { parse_str($_SERVER['QUERY_STRING'], $q); unset($q['p']); header('Location: ' . $_SERVER['PHP_SELF'] . ($q ? "?" . http_build_query($q) : '')); } 

является аккуратным способом. Он не уничтожает другие параметры GET, если они существуют.

Это то, о чем вы просите? (Сделайте перенаправление, если введено значение по умолчанию)

 if (isset($_GET['p'])) { if ($_GET['p'] == $defaultP) { header("HTTP/1.1 302 Found"); header("Location: ".$urlWithoutQuery); exit(); // or whatever the function is. } else { $foo = $_GET['p']; } } else { $foo = $defaultP; } 

Обратите внимание, что это должно быть сделано прежде, чем что-либо вообще будет отправлено клиенту (поскольку это часть заголовка).

Насколько я знаю, единственный способ скрасить что-то из URL-адреса на стороне клиента – это либо перенаправление, либо javascript (что, по сути, также выполняет перезагрузку, поэтому перенаправление, вероятно, происходит намного быстрее).

Посмотрите на этот учебник mod_rewrite: учебник

Используйте mod_rewrite от Apache, чтобы изменить example.com/?p=pagename на example.com/pagename

Поместите это в свой файл .htaccess:

 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/favicon.ico RewriteRule ^(.*)$ index.php?p=$1 [L,QSA] </IfModule> 

Вуаля, нет? P =

Если вы хотите внедрить дружественные / чистые URL-адреса, вы можете взглянуть на Net_URL_Mapper .

если это так, я могу полностью избавиться от части? p = в моем URL-адресе?

Да. Просто избавься от этого. Это никто, кроме вас, которые установили эти URL-адреса на вашем сайте. Итак, отредактируйте HTML-код своего сайта и избавьтесь от всего, что захотите.