Как избежать "?"использование регулярных выражений в .htaccess для mod_rewrite - PullRequest
4 голосов
/ 02 марта 2011

Мне нужно убежать от "?"символ в URL, так что он работает с переписанными URL-адресами, такими как поиск / почему-это? -1.html

В настоящее время у меня есть .htaccess

RewriteEngine on
RewriteRule ^search/(.*)-([0-9]+).html$ index.php?search=$1&page=$2 [L]

Спасибо

1 Ответ

6 голосов
/ 02 марта 2011

Не ставьте вопросительный знак в своих URL.? зарезервировано для начала строки запроса.

Чтобы поместить его в URL, закодируйте его как %3F.

. Прочитайте RFC и этот ответ .

* 1012.* Обновление

Если вы используете PHP (и похоже, что вы), вы можете сделать что-то вроде этого (запрошенная страница index.php/inter?net) ...

<?php

var_dump($_GET);

$urlTokens = explode('/', $_SERVER['REQUEST_URI']);

$slug = end($urlTokens);

var_dump($slug);

Выходы

array(1) {
  ["net"]=>
  string(0) ""
}

string(9) "inter?net"

Как видите, $_GET сбит с толку.

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