Вопрос по преобразованию URL

Главные вкладки

Аватар пользователя roddy roddy 8 марта 2012 в 15:43

Доброго времени суток, всех дам с праздником.

Имеется вопрос по Clean_URL и mod_rewrite:
Есть сайт с включенными Clean_URL, mod_rewrite, и модулем Pathauto. Есть некая нода, curl которой имеет вид http://www.example.com/node/4, а алиас - http://www.example.com/alias. В ноде содержится php-код, принимающий составленный по определенной логике параметр из 4 цифр, скажем, http://www.example.com/alias?id=5678 (либо http://www.example.com/node/4?id=5678). Необходимо перейти на curl вида http://www.example.com/alias/5678, либо http://www.example.com/alias/56/78.

Мозг подсказывает что полномасштабное изучение необходимых мануалов вскипятит его окончательно, поэтому прошу поделится готовыми вариантами решения, либо ссылкой на "мануал для чайников".

И еще вопрос в ту же степь: как будет выглядеть http://www.example.com/index.php?q=node/4 без преобразований url? Имеется ввиду, что нужно нечто типа http://www.example.com/index.php?q=node&nid=4 - с набором явно выраженных GET параметров. Если подскажете, смогу разобраться дальше сам, а то на данный момент алиас преобразованного url категорически отказывается еще раз быть переписанным независимо от калибра регэкспов и .htaccess.

Комментарии

Аватар пользователя roddy roddy 8 марта 2012 в 20:50

Поковырялся в .htaccess, единственная замеченная сервером конструкция

RewriteCond %{REQUEST_URI} = ^\/alias\/[0-9][0-9][0-9][0-9]$
RewriteRule ^\/[0-9][0-9][0-9][0-9]$ ?id=$1 [L]

благополучно его роняет с 500 ошибкой. Где я накосячил?

Аватар пользователя Orion76 Orion76 8 марта 2012 в 21:32

Вы бы лучше описали задачу на примере, а то плохо понятно, что вам нужно..
как я понял, вам необходим hook_menu,
посмотреть можно на
api.drupal.ru для шестой версии на русском(для семерке все тоже самое практически)
api.drupal.org на английском

Аватар пользователя roddy roddy 9 марта 2012 в 0:35

"orion76" wrote:
Вы бы лучше описали задачу на примере, а то плохо понятно, что вам нужно..
как я понял, вам необходим hook_menu,
посмотреть можно на
api.drupal.ru для шестой версии на русском(для семерке все тоже самое практически)
api.drupal.org на английском

Хмм, я вроде пример в первом посте приводил. Тем не менее, еще раз:

Есть нода http://www.example.com/?q=node/4

Также отзывающаяся на clean-URL http://www.example.com/node/4

Но в 99% случаев вызываемая по созданному в PathAuto алиасу http://www.example.com/alias

Она видоизменяется в зависимости от полученного параметра ?id=5678, генерируя параметры для flash-приложения, запускаемого из той же ноды, но не в этом суть.

Параметр может быть добавлен как к системному URL, так и к его "clean" аналогу и к URL с алиасом. Все прекрасно работает, но явно указывать параметры в GET-запросе нынче моветон.
Нужно этот параметр тоже сделать ЧПУ,

http://www.example.com/alias?id=5678

заменить на

http://www.example.com/alias/5678

Насколько мне известно, оптимальный инструмент для этого - модуль Апача mod_rewrite. Но почему-то он отказывается это делать, реакция на различные регэкспы была от нулевой до падения сервера. А самое плохое в том, что я не знаю, в каком направлении копать; то ли я регэкспы писать для mod_rewrite нормально не умею, то ли где-то происходит конфликт многочисленных переписываний многострадального URL, то ли Луна не в той фазе.

Аватар пользователя TurboAndroid TurboAndroid 9 марта 2012 в 0:56

ничего нового не приходит - напиши пхп код который передает во флеш параметр после вопроса или парсит реферер (например вызывай флеш в блоке пхп и выводи куда надо)

.htaccess ломать не надо это надо делать друпалом Smile если апач вместо него чета сделает будет тебе 500.
попробуй делать проще.

Аватар пользователя enemis enemis 9 марта 2012 в 1:34

А в чем трабла, формируйте адрес в своем пхп не так http://www.example.com/node/4?id=5678 http://www.example.com/node/4/5678) и используйте % в hook_menu

//хук меню
$items['node/%node/%'] = array(
              'title' => 'Калькулятор',
              'page callback' => 'my_page',
              'page arguments' => array(1,2),
              'access arguments' => array('access content'),
              'type' => Каллбак или нормал page в зависмости от требований,
      );

function my_module($node, $id){
//some action.
}

//имхо мод реврайт тут лишний.

Аватар пользователя natbampo natbampo 9 марта 2012 в 9:25

А число это 5678 - все время одно и то же или динамически будет меняться для этой страницы?

"roddy" wrote:
но явно указывать параметры в GET-запросе нынче моветон

Сильно буквально звучит. В друпале пагинаторы - через get параметры - тоже моветон что ли?