.htaccess переписать URL-адрес для имитации подпапки - PullRequest
1 голос
/ 10 февраля 2020

Я хотел бы переписать URL-адрес с

https://www.example.com/index.php?page=SOMEPAGE&user=SOMEUSER

на

https://www.example.com/settings/user/SOMEUSER

, где settings - параметр страницы из URL-адреса. Мое решение было:

RewriteEngine on

RewriteRule ^([-0-9a-zA-Z]+)/user/([-0-9a-zA-Z]+)$ index.php?page=$1&user=$2 [QSA,L]

Проблема в том, что все файлы отвечают кодом ошибки 404, потому что браузер считает, что /settings/user - это действительные папки на сервере. Как я могу добиться того, чтобы фактический путь URL оставался прежним?

1 Ответ

1 голос
/ 10 февраля 2020

Возможно, проблема в том, что вы используете относительные URL-адреса своих ресурсов. Если вы изменяете глубину пути ваших URL-адресов, вам необходимо убедиться, что вы используете либо root -относительные (начиная с sla sh), либо абсолютные (со схемой + имя хоста) URL-адреса.

См. мой ответ на следующий вопрос на сайте Webmasters SE для получения дополнительной информации:

потому что браузер, похоже, считает, что / settings / user являются действительными папками на сервере.

Нет, браузер видит это как URL-путь. Это URL-путь, как видно в браузере. Любые относительные клиентские URL будут относиться к этому URL-пути. Браузер не имеет понятия, что такое папки на стороне сервера, он работает только с URL-адресами.

Как добиться того, чтобы фактический путь URL-адреса оставался прежним?

Вы изменяете URL-путь в браузере, поэтому единственный способ обойти это - сделать ваши URL не относительными.

...