У меня есть этот url
www.mydomain.com/profile.php?id=524170354d5a6
и я хочу преобразовать его в дружественный URL-адрес:
www.mydomain.com/profile/524170354d5a6
Я уже пробовал файл .htacces, но он не работает, мой .htaccess находится внутри моей папки proyect (www / project ->. Htacces) Хорошо ли это? или он должен быть в (www / .htaccess), мой .htaccess содержит код:
RewriteEngine On RewriteRule ^profile/(\d+)*$ /profile.php?id=$1
Я видел несколько примеров в Интернете, но никто не работает, это также может быть связано с тем, что мой идентификатор содержит числа и буквы? или мое регулярное выражение ошибочно?
Ваш код .htaccess
должен находиться в DOCUMENT_ROOT/.htaccess
. Также немного измените свой код:
Options +FollowSymLinks -MultiViews RewriteEngine On RewriteRule ^profile/([0-9]+)/?$ /profile.php?id=$1 [L,QSA,NC]
Чтобы создать привлекательный URL-адрес, вам понадобится правило, чтобы превратить «уродливый» URL-адрес в «причудливый» URL-адрес. Это делается с помощью так называемого внешнего перенаправления . Вам понадобится другое правило, чтобы включить «причудливый» URL-адрес в «уродливый» URL-адрес внутри, чтобы сервер знал, что делать. Это создаст бесконечный цикл, если вы не предотвратите это через флаг END
(доступный из Apache 2.3.9 и выше) или трюк THE_REQUEST
.
#Rewrite fancy url to ugly url internally and stop rewriting completely #RewriteRule ^profile/(.*)$ profile.php?id=$1 [END] #Internal rewrite pre-2.3.9 RewriteCond %{THE_REQUEST} ^GET\ /profile/(.*)\ .*$ RewriteRule ^ profile.php?id=%1 [L] #Redirect the ugly url to the fancy url, so that the user will always see the fancy url in the address bar RewriteCond %{QUERY_STRING} ^id=(.*)$ RewriteRule ^profile\.php$ profile/%1 [R,L]
(Я не могу проверить это на этом компьютере)