Как настроить htaccess для получения параметров из удобного для пользователя URL-адреса для использования с JS - PullRequest
0 голосов
/ 05 ноября 2018

Я бы хотел, чтобы пользователи увидели этот красивый 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 Ответ

0 голосов
/ 05 ноября 2018

В вашем .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);

Надеюсь, это поможет вам!

...