mod_rewrite для каждой динамической ссылки - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть необработанный веб-сайт PHP, на котором динамически создается профиль пользователя. После создания страницы URL-адрес страницы:

https://example.org/contributor-profile.php?id=1002&%20user=abc

Я использовал mod_rewrite в моем файле .htaccess. Код:

 RewriteEngine on

 RewriteRule ^abc/?$ /contributor-profile.php?id=1002&%20user=abc [NC,L]

после этого я перехожу по этой ссылке [example.org/abc] и показываю эту динамически генерируемую веб-страницу. Но когда я нажимаю эту ссылку с другой веб-страницы, я вижу старый URL-адрес. Как решитьэта проблема? Должен ли я изменить коды PHP?

Тогда это правило работает только для URL пользователя abc, а не для каждого пользователя.Как решить эту проблему?

1 Ответ

0 голосов
/ 22 февраля 2019

Правило перезаписи, которое вам, вероятно, нужно, может выглядеть примерно так:

RewriteEngine on
RewriteRule ^/profile/(.*)$ /contributor-profile.php?id=1002&user=$1 [NC,L]

RewriteRules принимают регулярное выражение для соответствия URL-адресу (вы должны посмотреть это, если не знаете, что это такое).(.*) определяет группу совпадений, которую позже можно использовать в переписанном URL-адресе, как $1, что означает первую группу совпадений.

В вашем коде PHP вам больше не нужно указывать URL-адреса на /contributor-profile.php?... ивместо этого направьте их непосредственно на /profile/username, который будет иметь желаемый эффект и будет работать для всех пользователей.

Подпуть profile/ необходим для этого решения, чтобы предотвратить петли перенаправления.

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