2015-04-29 2 views
2

Я в настоящее время имеют профили на испытательную установку веб-сайта для просмотра в этом формате:Treat имя файла в PHP GET

example.com/profile.php?u=username 

Я хотел бы использовать этот формат:

example.com/profile/username 

Как бы я обрабатывать username как переменную в php, а не файл?

+0

См. Мой ответ ниже –

ответ

6

Вы должны использовать апача mod_rewrite.

Создайте файл с именем .htaccess в корневом каталоге вашего сайта и добавьте следующие строки:

RewriteEngine on 
RewriteRule ^/profile/(.*)$ /profile.php?u=$1 [QSA,L] 

теперь, если вы ориентируетесь на:

example.com/profile/usertest 

апач пошлет переменную usertest в profile.php?u=usertest

+0

Не работает для меня. У меня установлен mod_rewrite, allowoverride установлен для всех и пробовал как в .htaccess, так и apache2.conf – Xenry

+0

Пожалуйста, определите «__Doesn't work for me__», также добавьте файл журнала в ваш .htaccess, то есть: «RewriteLog "/path/to/log/somepath.log" RewriteLogLevel 9'. Убедитесь, что журнал доступен для записи и проверьте его после повторной попытки, что он говорит? –

+0

'RewriteLog' и' RewriteLogLevel' были удалены. Я изменил 'LogLevel' на' debug' и получил http://pastebin.com/Z1k7nkhS в error.log. «Не работает для меня» Я имел в виду, что результаты ничем не отличаются от того, если у меня не было этого правила; сервер выбрасывает 404. – Xenry

1

Вы можете использовать что-то вроде этого:

RewriteCond %{REQUEST_URI} ^/profile/(.*)$ 
RewriteRule ^(.*)$ /profile.php?u=%1 [L] 

или

RewriteEngine on 
RewriteRule ^/profile/(.*)$ /profile.php?u=$1 [QSA,L] 
Смежные вопросы