Возможно ли перезаписать (Apache Mod-Rewrite) URL из этого:
http://www.example.com/view.php?t=h5k6
к этому http://www.example.com/h5k6
Причина такой перезаписи заключается в том, что URL-адрес должен быть очень коротким (немного похожим на крошечную службу URL-адреса).
Будет ли новый URL-адрес удаляться на мою страницу view.php? Может ли он еще использовать супер глобальный массив GET ( $_GET
) для доступа к переменной t
? Я все еще хочу, чтобы моя страница index.php отображалась на этом сайте http://www.example.com .
Я также благодарен за комментарии к эффектам, которые могут возникнуть, поскольку я немного нуб. 🙂
Спасибо всем
Терминология mod-rewrite работает по-другому. Запросы будут опубликованы следующим образом: http://www.example.com/h5k6
и будут переписаны по http://www.example.com/view.php?t=h5k6
. Таким образом, ваши PHP-скрипты могут отвечать на запросы, как если бы они были отправлены как параметры GET, но пользователи видят URL-адреса гораздо более дружелюбным образом.
Поэтому вам не нужно менять скрипты PHP, и вы все равно можете получить доступ к параметру t
из массива GET.
В вашем случае правило будет выглядеть так:
RewriteRule ^/(.*) /view.php?t=$1
Вы можете быть более конкретным относительно того, что вы принимаете (а не только выражения catch-all .*
). Кроме того, вы можете захотеть исключений из этого правила, если у вас есть другие страницы в этом каталоге, кроме view.php.
Попробуйте один из них:
# /view.php?t=h5k6 externally to /h5k6 RewriteCond %{THE_REQUEST} ^GET\ /view\.php RewriteCond %{QUERY_STRING} ^([^&]*&)*t=([^&]+)&?.*$ RewriteRule ^/view\.php$ /%2 [L,R=301] # /h5k6 internally to /view.php?t=h5k6 RewriteRule ^/([0-9a-z]+)$ view.php?t=$1 [L]
Да, это определенно возможно и будет иметь именно тот эффект, который вы описываете. Однако ваша терминология обратная. «Короткий» URL-адрес – это тот, который отправляет исходный код браузера на сервер, и он переписывается в более длинную версию, которая затем фактически обрабатывается, и приводит к запросу PHP.
В значительной степени единственный улов заключается в том, что если использовать это небрежно, это может привести к тому, что поисковые системы индексируют оба URL и рассматривают их дублирующийся контент, что плохо для вашего рейтинга. С одной стороны, этого можно избежать (и должно) избежать, никогда не публикуя «длинную» версию в любом месте (т.е. все внутренние ссылки на сайте имеют «короткий» формат). Однако, поскольку вы можете публиковать их случайно (что может случиться легко), вы также должны использовать ссылку rel = "canonical", чтобы сообщить поисковым системам URL, который вы хотите проиндексировать ваши страницы.