Я пытаюсь переписать URL-адрес моего URL-адреса, чтобы быть чистым и не содержать параметров, по крайней мере для пользователя. Я использую сервер nginx и имею некоторые проблемы с тем, чтобы это работало.
Пример сайта: http://website.com/subfolder/
Ссылка на профиль: http://website.com/subfolder/profile.php
Что работает: http://website.com/subfolder/profile.php?username=Bobby
Что я хочу работать: http://website.com/subfolder/Bobby
Блок кода в моей конфигурации сайта:
location /subfolder/ {
if ($query_string ~ "^username=([A-Za-z0-9]+)$"){
rewrite ^/profile.php$ http://website.com/subfolder/%1 redirect;
}
}
Ваша переадресация почти правильна. Просто небольшие косметические изменения.
location = /subfolder/profile.php {
if ($arg_username) {
return 301 /subfolder/$arg_username/;
}
fastcgi_pass 127.0.0.1:9001;
include fastcgi_params;
}
Теперь, как сказал regilero, вам нужно разобрать/вставить папку/имя пользователя/внутри скрипта или вы можете сделать это с помощью nginx
location ~ ^/subfolder/(?<username>.+)/$ {
rewrite ^(.*)$ /subfolder/profile.php?username=$username break;
fastcgi_pass 127.0.0.1:9001;
include fastcgi_params;
fastcgi_param REQUEST_URI $uri$is_args$args;
}
2 важных примечания: переписывающий break
ключевого слова, защищающее от редиректа цикла; fastcgi_param REQUEST_URI
обычно составляет $request_uri
(в fastcgi_params), но это оригинальный URI, поэтому нам нужно его изменить.