#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 / …