.htaccess перезаписать с помощью переменных GET

#php #.htaccess

#php #.htaccess

Вопрос:

я пытаюсь создать такой URL-адрес, используя htaccess … www.example.com/user/david

что у меня есть сейчас, так это www.example.com/user?username=david

Это хорошо работает, когда я делаю что-то вроде

 RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*/([a-zA-Z0-9_-] )|([a-zA-Z0-9_-] ))$ ./user.php?username=$1 [L]
  

Но я ошибаюсь в своем php-коде.

 if(isset($_GET["username"]))
{
    $stmt = $mysqli->prepare("SELECT * FROM campus_users WHERE campus_name = ?");
    $stmt->bind_param("s", $campus_name );
    $campus_name = trim($_GET["username"]);
    $stmt->execute();
    $result = $stmt->get_result();

    if ($result->num_rows == 1) {
        $row = $result->fetch_array(MYSQLI_ASSOC);
        //displaying users rows
    } else {
        header("location: blank-page");
      exit();
    }
} else {
  header("location: home.php");
  exit();
}
  

Но когда я ввожу URL-адрес следующим образом www.example.com/user?username=david это хорошо работает…

Проблема в том, что мне нужен умный URL-адрес, который не работает из-за моего php, я думаю.

Пожалуйста, помогите мне. Заранее спасибо.

Ответ №1:

Если ваш URL-адрес со строкой запроса работает нормально, то, скорее всего, это означает, что ваши .htaccess правила не работают, обычно мы предоставляем пользователям удобные URL-адреса, в вашем случае это должно быть www.example.com/user/david , и внутренне он должен перенаправляться www.example.com/user.php?username=david . Пожалуйста, попробуйте следовать правилам в вашем .htaccess файле.

 RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/user/(.*)$
RewriteRule ^.*$ /user.php?username=%1 [QSA,NC,NE,L]
  

ПРИМЕЧАНИЕ: если возможно, и вы не используете prod-системы, вы также можете попробовать перезапустить свою службу Apache, хотя в этом нет необходимости, но иногда это может потребоваться. Также используйте удобный URL-адрес, как указано выше, в браузере, убедитесь, что вы очистили кэш браузера, прежде чем нажимать на него.

Комментарии:

1. Большое спасибо. я действительно ценю ваши усилия.

2. Первый .htaccess, который вы опубликовали, вообще не загрузит страницу. это показывает мне ошибку … объект не найден

3. @Everythinggood, эти правила очень хорошо сработали для меня, когда я тестировал их в local. Не могли бы вы сообщить мне о любых ошибках, которые вы получаете?

4. @Everythinggood, итак, ваше имя файла php user.php на который вы хотите перенаправить, я прав здесь?

5. Второй дает мне этот длинный URL localhost / campus / …