php: избавиться от? p = запроса в URL? - PullRequest
0 голосов
/ 27 июля 2010

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

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

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

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

извините за странные вещи с фу и барами, у меня не было лучшего примера;) С уважением, Мэтт

Ответы [ 6 ]

2 голосов
/ 27 июля 2010

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

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 (который, по сути, также выполняет перезагрузку, поэтому перенаправление, вероятно, намного быстрее). *

1 голос
/ 27 июля 2010

Используйте Apache mod_rewrite, чтобы изменить 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=

1 голос
/ 27 июля 2010

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

0 голосов
/ 27 июля 2010

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

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

0 голосов
/ 27 июля 2010
if ($_GET['p'] == 'bar') {
        parse_str($_SERVER['QUERY_STRING'], $q);
        unset($q['p']);
        header('Location: ' . $_SERVER['PHP_SELF'] . ($q ? "?" . http_build_query($q) : ''));
}

- это аккуратный путь. Он не стирает другие параметры GET, если они существуют.

0 голосов
/ 27 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...