2013-09-28 4 views
0

У меня есть этот URL
www.mydomain.com/profile.php?id=524170354d5a6
, и я хочу, чтобы преобразовать его в дружественной URL, как это:
WWW. mydomain.com/profile/524170354d5a6
Я уже пробовал файл .htacces, но он не работает, мой .htaccess находится внутри моей папки proyect (www/project ->. htacces) Хорошо ли это? или он должен быть в (WWW/.htaccess) мой .htaccess содержит код:ID пользователя динамические страницы .htaccess

RewriteEngine On 
RewriteRule ^profile/(\d+)*$ /profile.php?id=$1 

Я видел несколько примеров в Интернете, но никто не работает, это может быть потому, что мой идентификатор содержит цифры и буквы? или мое регулярное выражение ошибочно?

+0

Какую версию Apache вы используете? – Sumurai8

+0

Включена перезапись Apache 2.0 и a2enmod – Kakitori

+0

_ «это не работает» _, Где вы перенаправляетесь? –

ответ

0

Ваш .htaccess код должен быть в DOCUMENT_ROOT/.htaccess. Кроме того, измените код немного:

Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteRule ^profile/([0-9]+)/?$ /profile.php?id=$1 [L,QSA,NC] 
0

Чтобы фантазии 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] 

(я не могу проверить это на этом компьютере)

Смежные вопросы