Есть скажем такой УРЛ
http://site.com/product/productname#comment-17
Так вот, мне необходимо вычленить с него comment-17. Однако же загвоздка: если я применяю стандартные друпаловские способы, выводится в лучшем случае полный УРЛ но без якоря
Скажем, пробовал такое:
<?php
$uri
= $_SERVER['HTTP_HOST'] . '/' . request_uri();
print $uri;
?>
или даже такое
<?php
$url
= (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
print $url;
?>
GET q тоже не работает
Как быть?
Комментарии
якоря не передаются на сервер
Ява скрипт?
Ява рулит
alert(window.location);
var loc = window.location;
});
Ну если якоря даже в GET['q'] нет, то скорей всего у вас включену чистые ссылки и mod_rewrite не передаете все что после # в drupal.
Если бы передавался то в arg(номер_последнего_аргумента), якорь бы был.
Обычно используются следующие правила для mod_rewrite drupal или что то подобное
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</Directory>
Как видите в q передается вся строка от начала и до конца.
Ну и до кучи нашел вот такое любопытное описание для mod_rewrite
Description:
By default, redirecting to an HTML anchor doesn't work, because mod_rewrite escapes the # character, turning it into %23. This, in turn, breaks the redirection.
Solution:
Use the [NE] flag on the RewriteRule. NE stands for No Escape.
----------
Но конвертирование логически не должно помешать так как php при получении должен был раскодировать %23 в # снова.
Ну по идее правильно. #bla-bla -- это маркер на части документа, а не отдельный самостоятельный url
Ок, соглашусь что не посылаются не сервер, честно говоря откровение для меня за столько лет это узнать
А чтобы уж не голословно, действиетельно по rfc2396 якорь обрабатывается после получения данных, это же косвенно в еще одной rfc прописано, что якорь используется только после получения данных по первой ссылке (часть URI до знака #), а уже потом используется вторая вложенная ссылка, которая и называется якорь. И что интерпретируется исключительно броузером после получения ресурса.
4.1. Fragment Identifier When a URI reference is used to perform a retrieval action on the identified resource, the optional fragment identifier, separated from the URI by a crosshatch ("#") character, consists of additional reference information to be interpreted by the user agent after the retrieval action has been successfully completed. As such, it is not part of a URI, but is often used in conjunction with a URI.