2014-04-01 3 views
0

У меня есть компонент Joomla «com_foo», который хорошо работает, когда вызывается через ...Joomla URL переписывания для компонента без редиректа

http://my.joomla.site/index.php?option=com_foo&id=1234

... но мне нужен URL быть в следующем формате :

http://my.joomla.site/getfoo/1234

ближайший я могу получить это со следующим .htaccess переписывания, который вызывает редирект:

RewriteEngine On 

# My Rule 
RewriteRule ^getfoo/(.*)$ /index.php?option=com_foo&id=$1 [R=301,L] 

# Joomla rules 
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 
RewriteCond %{REQUEST_URI} !^/index\.php 
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php [L] 

Я не могу понять, как заставить одно и то же работать «внутренне» без переадресации. Так что в моем примере выше, что случается:

[1] GET http://my.joomla.site/getfoo/1234 REDIRECTS TO 
[2] GET http://my.joomla.site/index.php?option=com_foo&id=1234 RENDERS PAGE 

Что мне нужно

[1] GET http://my.joomla.site/getfoo/1234 RENDERS PAGE 

Почти все Стараюсь результаты в 500 ошибок. Я чувствую, что это должно быть что-то простое, но в этот момент меня били.

ответ

1

Хотя вы, вероятно, могли бы это сделать, используя файл .htaccess, разделив логику SEF с кодом компонента, вы откроете себе путь к кошмару управления по дороге. Однако Joomla предоставляет средства для управления синтаксическим разбором и генерированием SEF с вашими настраиваемыми компонентами. Поместив файл router.php в корневую папку вашего компонента, Joomla автоматически использует этот файл для генерации и анализа URL-адресов SEF. Хотя приведенная ниже ссылка дает подробную информацию о том, как реализовать, я нашел обратные инженерные основные компоненты. Файл router.php мне очень помог.

http://docs.joomla.org/Supporting_SEF_URLs_in_your_component

+0

Спасибо! Я думал, что, вероятно, лучший способ. Я еще не полностью решил это, так как у меня проблемы с разбором маршрута и скрытыми меню, но я рядом. –

1

Try:

RewriteEngine On 
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /index\.php\?option=com_foo&id=(.*)\ HTTP 
RewriteRule^/getfoo/%2\? [R=302,L] 

RewriteRule ^getfoo/(.*)$ /index.php?option=com_foo&id=$1 [L] 

выше воли:

  • Перенаправление http://my.joomla.site/index.php?option=com_foo&id=1234 на http://my.joomla.site/getfoo/1234 и показать информацию из http://my.joomla.site/index.php?option=com_foo&id=1234 страницы

При просмотре

  • http://my.joomla.site/getfoo/1234 будет отображать информацию из http://my.joomla.site/index.php?option=com_foo&id=1234 страницы

R=302 Изменения к R=301, когда вы уверены, что редирект работает.

+0

Спасибо за это, это, безусловно, помогает мне увидеть лучший способ приблизиться все это. К сожалению, в моей настройке это приводит к еще 500. Я попытался немного изменить ситуацию, и я заканчиваю либо 500, либо переадресовывает циклы. Я также собираюсь попробовать рекомендацию Брайана Болли работать в маршрутизаторе, и если это будет работать, мне не нужно будет переписывать. –

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