Как создать чистый URL-адрес для пользователей профиля в htaccess, когда я уже использую для статьи, которая работает нормально - PullRequest
2 голосов
/ 03 августа 2020

Это очень частый вопрос по inte rnet, но, к сожалению, я пока не нашел решения. Моя проблема в том, что я уже использую приведенные ниже коды, которые отлично подходят для статей (site.com/my-first-article) .

#remove .php    
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

#for pretty url
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ blog.php?qTitle=$1 [NC,L]

Но теперь мне нужно (site.com/profile/user -name), когда я копирую и редактирую приведенный выше код для профиля пользователя, он не работает.

#remove .php    
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

#for pretty url
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ profile.php?username=$1 [NC,L]

Надеюсь, я правильно определил вопрос, и некоторые могут понять мою проблему. Спасибо за ваше время.

Мои результаты

введите описание изображения здесь

1 Ответ

0 голосов
/ 03 августа 2020

Чтобы изменить адрес site.com/profile.php?username=J0R1AN на site.com/profile/J0R1AN, например, вам нужно будет использовать этот код:

RewriteEngine On
# If user directly accesses /profile/[username]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?profile/(.*?)/?$ /profile.php?username=$1 [L]
# If user accesses /profile.php?username=[username]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /profile\.php\?username=([^\&\ ]+)
RewriteRule ^/?profile\.php$ /profile/%1? [L,R=301]

Вы даже можете продолжать использовать $_GET в профиле. php файл

Источник: https://www.taniarascia.com/rewrite-query-string-to-path-with-htaccess/

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