2015-08-01 4 views
1

Я пробовал бесчисленное множество вещей, но не могу найти способ отображения в строке URL браузера переписанного URL-адреса вместо него с параметрами 3 get.Отображать канонические перезаписанные URL-адреса и скрывать динамические

Мой "некрасиво" URL:

http://example.com/archive.php?id=tt2131523&date=20131004&title=graceland

"довольно" URL мне нужно отобразить:

http://example.com/tt2131523-20131004-graceland.html

Вот мой файл .htaccess:

RewriteEngine on 

RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule .* http://%1%{REQUEST_URI} [R=301] 

RewriteCond %{HTTPS} on 
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule .* https://%1%{REQUEST_URI} [R=301] 

RewriteRule ^([^-]*)-([^-]*)-([^-]*)\.html$ /archive.php?id=$1&date=$2&title=$3 [NC,L] 

Мои другие файлы PHP служат «уродливым» ссылкам , ссылки работают, но URL-адреса остаются «уродливыми». Версия "prettyfied" не отображается.

Если я нахожу «симпатичный» URL-адрес в браузере, переписывание работает, и я обращаюсь к странице.

Я бы хотел, чтобы даже если пользователь вводит «уродливую» версию, он будет перенаправлен на «симпатичный».

Нужно ли мне изменить структуру ссылок (в других php-файлах) и сделать их прямо указывающими на переписанную версию URL-адресов или есть способ в .htaccess для отображения переписанной версии?

И, между прочим, это флаги в порядке?

Спасибо.

+0

вы хотите добавить перепишет условие, что если URI передает значение запроса затем перенаправить страницу в «красивую» версию ** перед тем ** затем обработок симпатичной версии с правилом перезаписи, которое вы указали выше. это условие должно быть новым условием и помещено выше правила перезаписи, которое у вас уже есть. – Martin

+0

Хорошо, спасибо Мартин. Как бы это выглядело? – yoann44

+0

Является ли ваш htaccess в корневой папке? – starkeen

ответ

1

Вы можете использовать это:

RewriteEngine On 
RewriteCond %{THE_REQUEST} /archive\.php\?id=([^&]+)&date=([^&]+)&title=([^\s]+) [NC] 
RewriteRule^/%1-%2-%3.html? [NC,R,L] 
RewriteRule ^([^-]+)-([^-]+)-([^.]+)\.html$ /archive.php?id=$1&date=$2&title=$3 [QSA,L,NC] 
+0

Спасибо @ Старкин. Оно работает ! Итак, я понимаю, что мой RewriteRule был в порядке, но у меня не было флага QSA. Итак, что делают ваши 2 линии? Я предполагаю, что порядок вызова важен. Можете ли вы прокомментировать свой ответ, пожалуйста? – yoann44

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