Как настроить htaccess для получения параметров из удобного для пользователя URL-адреса для использования с JS
Я хотел бы, чтобы пользователи видели этот красивый URL:
www.example.com/michael
и мой код, чтобы иметь возможность получить его как переменную через GET:
www.example.com?user=michael
На стороне JavaScript я тестирую это с этим:
var userId = getQueryString('user');
console.log("user="+userId);
На стороне .htaccess я использую это:
RewriteEngine On
RewriteRule ^([^/]*)$ ?user=$1 [L]
Когда я загружаю "www.example.com/michael", я не получаю перенаправление на 404, что хорошо. Но консоль выводит "user=null". Он не получает параметр через GET. Что я делаю неправильно?
1 ответ
В вашем .htaccess
напишите следующий код:
RewriteEngine On
RewriteRule ^([A-Za-z0-9])/?$ /index.php?user=$1 [NC,L]
Таким образом, вы можете получить доступ к вашему сайту, набрав www.example.com/michael
или же www.example.com/michael/
или даже www.example.com/MICHAEL
Если вы хотите получить user
параметр в JavaScript, используйте код ниже:
const urlParams = new URLSearchParams(window.location.search);
const username = urlParams.get('user');
Но помните, что JavaScript не будет определять параметр user
если вы используете Rewrite
режим, потому что с точки зрения браузера, URL является "/michael", а не "/?user=michael". JavaScript только смотрит на дружественный путь.
Вместо этого вы можете использовать перенаправление, поэтому, когда кто-то получает доступ к вводу "/michael", вы перенаправляете пользователя на "/? User = michael".
РЕДАКТИРОВАТЬ: Другое решение состоит в том, чтобы проанализировать весь URL, перехватывая первый блок "/" URL www.example.com/michael
, Например:
var username = location.href.substring(location.protocol.length).substr(2).substring(location.href.substring(location.protocol.length).substr(2).indexOf('/') + 1);
Надеюсь, это поможет вам!