Apache htaccess rewriterule конфликт между двумя URL-адресами - PullRequest
0 голосов
/ 17 июня 2020

Мой файл htaccess выглядит следующим образом:

RewriteEngine On
RewriteRule    'assign-associate-competencies'   assign_associate_competencies.php    [QSA,L]
RewriteRule    'review-proposed-initiative'   proposed_initiative_review.php    [QSA,L]
RewriteRule    'associate'   MemberAssociates.php    [QSA,L]
RewriteRule    'about-us'   aboutus.php    [QSA,L]

Проблема в том, что когда я пытаюсь открыть mysite.com/assign-associate-competencies, он показывает содержимое в MemberAssociates. php

Как изменить его, чтобы я мог видеть содержимое в assign_associate_competencies. php?

1 Ответ

1 голос
/ 21 июня 2020

Вы должны быть более конкретными c с вашим правилом. Измените associate так, чтобы совпадение было в начале запроса:

RewriteRule    '^associate'   MemberAssociates.php    [QSA,L]

Для пользовательской проблемы общий подход состоит в том, чтобы определить глобальный локальный путь, а затем передать относительный путь параметру:

например URL:

mysite.com/user/myusername1

затем используйте:

RewriteRule    '^user/(.+)'   users.php?username=$1    [QSA,L]

, чтобы отобразить его обратно на панель пользователей. Многие сайты не используют текстовую версию имени пользователя, например, SO использует значение между глобальным путем и именем пользователя https://stackoverflow.com/users/3783243/user3783243, 3783243 используется, а не user3783243 во всех своих поисках. Они также используют канонический поиск, чтобы убедиться, что пользователь существует. Загрузка https://stackoverflow.com/users/3783243/notuser3783243 выдает 301 и направляет правильного пользователя.

...