эй, ребята, я не ищу моддвритскую вещь или что-то связанное. Я просто не уверен, что это возможно или нет?
Я использую 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-код своего сайта и избавьтесь от всего, что захотите.