@devhub16

Как сделать правильный переход в htaccess?

Всем привет! Есть маленькая проблема - делаю сокращатель ссылок наподобие vk.cc.
Есть файл link.php, который располагается в корне сайта. Нужно сделать так - при переходе просто на site.com/link открывалась страница с формой для сокращения ссылки, а при переходе на site.com/link/sdsffdf показывался адрес страницы.
В htaccess я прописал вот так:
RewriteRule ^link/(.*)$ link.php?link=$1 [PT,L,QSA]
RewriteRule ^link/*$ link.php [L,QSA]
Проблема заключается в том, что при переходе на site.com/link/sdsffdf адрес сайта меняется на site.com/link/link/sdsffdf, то есть сам link дублируется. Как сделать, чтобы он не менялся, а было просто site.com/link/sdsffdf?
  • Вопрос задан
  • 339 просмотров
Решения вопроса 1
shambler81
@shambler81 Куратор тега htaccess
известная проблемма, решается достаточно просто
не
RewriteRule ^link/(.*)$ link.php?link=$1 [PT,L,QSA]

а
RewriteRule ^link/(.*)$ link.php\?link=$1 [PT,L,QSA]

Мат часть батенька ;)

теперь забегая вперед, в случае когда редирект со страницы с GET пармметром: - он не является частью урла не видет RewriteRule
Для этого используется двухуровневя конструкция с RewriteCond
И если бы нужно было сделать редирект в обратную сторону.

RewriteCond %{QUERY_STRING} (^|&)link\=\$1($|&)
RewriteRule ^link\.php$ /link/? [L,R=301]

Хрень по краям гет парметра это и или в случае если гет не один.

Ну и на последок вкусняшка
https://donatstudios.com/RewriteRule_Generator
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы