Форумы портала PHP.SU » Серверное администрирование » Apache и другие веб-серверы » Редактирование файла .htaccess

Страниц (1): [1]
 

1. tol64 - 08 Сентября, 2019 - 10:04:19 - перейти к сообщению
Добрый день.

К сожалению, не смог решить задачу самостоятельно. Прошу помочь разобраться. Тренируюсь на локальном сервере.


Задача

Нужно преобразовать адрес вида:

    http://localhost/GetSQL/users/profile?user=tol64


в адрес вида:

    http://localhost/GetSQL/users/tol64


//---

Перепробовал множество различных вариантов. Ничего не помогает.
Либо всё остаётся, как есть. Либо ошибка 404.


(Добавление)
Одна из попыток приводящая к ошибке 404:

    RewriteRule ^users/(.*)$ /profile?user=$1


А вот этот вариант ошибок не выдаёт, но ничего не изменяет в адресной строке:

    RewriteRule ^/users/(.*)$ /profile?user=$1
2. teleoperator27 - 08 Сентября, 2019 - 12:30:32 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. RewriteEngine On
  3. RewriteRule ^/GetSQL/users/(.*)$ /GetSQL/users/profile?user=$1 [L]
3. tol64 - 08 Сентября, 2019 - 14:24:39 - перейти к сообщению
teleoperator27 пишет:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. RewriteEngine On
  3. RewriteRule ^/GetSQL/users/(.*)$ /GetSQL/users/profile?user=$1 [L]


К сожалению, не помогло.
(Добавление)
Задача

Нужно преобразовать адрес вида:



в адрес вида:



, но без перезагрузки страницы.

//---

Сейчас реализовано так, что при наведении курсора на ссылку показывается адрес



, но переход осуществляется по



То есть в html вместо profile в ссылку подставляется никнейм авторизованного пользователя:



, а при обработке клика по ссылке в javascript подменяем ссылку для перехода к нужному php-скрипту:



В файле .htaccess есть преобразование убирающее расширение .php



Перепробовал множество различных вариантов. Ничего не помогает. Либо всё остаётся, как есть. Либо ошибка 404.

Одна из попыток приводящая к ошибке 404:



А вот этот вариант ошибок не выдаёт, но ничего не изменяет в адресной строке:



Файл .htaccess находится в корневой директории:



Как можно решить эту задачу? Может быть есть другие способы без редактирования .htaccess?

P.S. >

Попробовал применить предложенные на других сайтах решения. К сожалению это не дало нужно результата. Опишу, что сделал и что получил на этот раз.

В файле .htaccess теперь не производится попытки преобразования ссылки.

JS-код обработки клика на ссылке профиля пользователя теперь выглядит вот так:



После нажатия на ссылке профиля пользователя сначала блокируется переход по ней:



и, если при обработке ответа от сервера не произвести шаг назад:



, то в адресной строке увидим следующий результат:



Шаг назад убирает символ #, но иногда видно, как он мигает.

На первый взгляд проблема решена, но если сейчас, находясь в профиле пользователя, обновить страницу, получаем ошибку 404.

Есть ли, какие-то общие правила, которые бы помогли реализовать описанную схему без таких проблем? Может быть, кто-нибудь порекомендует книгу, где описывается подобное, чтобы не изобретать велосипед? На многих сайтах такое реализовано.
4. miketomlin - 10 Сентября, 2019 - 14:02:43 - перейти к сообщению
Нормально имя файла-обработчика напиши в подстановке правила (profile.php, т.е. с расширением).

tol64 пишет:
Файл .htaccess находится в корневой директории:

http://localhost/site
Если у тебя каталог site должен быть корнем сайта, сделай его таковым. //localhost/site1/, //localhost/site2/ и т.п. для разных сайтов – это полная хрень.

tol64 пишет:
Как можно решить эту задачу? Может быть есть другие способы без редактирования .htaccess?
Да. Называется единая точка входа. Файл .htaccess с директивами mod_rewrite используется по минимуму или не используется вообще.
(Добавление)
P.S. На том же сайте про REST-адресацию можешь почитать. Это классика для твоего случая – использовать адреса вроде /users/tol64 (можешь глянуть мою демку для /articles).

 

Powered by ExBB FM 1.0 RC1