Перейти к содержимому
Русский язык для Invision Community 5

Свой ЧПУ (furl)

Подскажите,как сделать, чтобы страница

https://сайт.eu/script.php/1/?newsid=2

Была доступна по адресу

https://сайт.eu/members/1/newsid/2

 

Реврайты включены, адрес доступен https://сайт.eu/members/1/

Предполагаю, нужно что то прописать в файле

/applications/members/extensions/furlTemplates.php

Рекомендованные сообщения

Если контроллер данного чпу находится вне модулей форума /admin/applications/%app%/modules_public/, то скорее всего придется писать кастомный реврайт в htaccess

 

Добавить после RewriteEngine On (или RewriteBase если он следует после RewriteEngine)

RewriteRule ^members/(\d+)/newsid/(\d+) script.php/$1/?newsid=$2 [L]

Правда, я не совсем понимаю как работает это script.php/1/. Возможно этот момент придется пересмотреть и убрать его в параметр запроса query string как newsid.

  • Автор

Правда, я не совсем понимаю как работает это script.php/1/. Возможно этот момент придется пересмотреть и убрать его в параметр запроса query string как newsid.

Да, скорее всего корректнее будет так

script.php?members=id&newsid=id

К виду так же

/members/id/newsid/id

  • Автор

А если скрипт будет написан в среде приложения easypages , то нужно будет прописать в конфиге этого приложения ?

Да, если скрипт находится в виде модуля одного из приложений, тогда можно воспользоваться системой чпу форума, где шаблоны прописываются в furlTemplates.php Если вне, тогда реврайт в htaccess.

 

RewriteRule ^members/(\d+)/newsid/(\d+) script.php?members=$1&newsid=$2 [L]

  • Автор

Не пойму, где именно здесь указывать ссылку на скрпит?

	'showuser'	=> array( 'app'		      => 'members',
					  'allowRedirect' => 1,
					  'out'           => array( '#showuser=(.+?)((?:&|&)f=(.+?))?(&|$)#i', 'user/$1-#{__title__}/$2$4' ),
					  'in'            => array( 'regex'   => "#^/user/(\d+?)-#i",
											    'matches' => array( array( 'showuser', '$1' ) ) ) ),

Ссылка на скрипт //сайт.eu/pages/gamestats?member=id&newsid=id

А почему просто через htaccess не сделать?

Чтобы написать шаблон для этого урл, нужно разобрать его на составляющие в виде просто адреса без чпу - app, module и другие, и составлять для него входящие параметры matches. Этот адрес относится к чпу темплейтов pages, там и нужно смотреть подходящие шаблоны.

  • Автор

у меня нжинкс без апача

Либо я не правильно локацию прописываю, либо оно почему то не работает

Я так понимаю /pages/ это урл приложения easypages. Вы хотите преобразовать чпу адрес этого приложения в другой адрес, соответствующий приложению members.

 

Попробуйте в /admin/applications/members/extensions/furlTemplates.php

После

$_SEOTEMPLATES = array(

Добавить

'members_newsid'	=> array(
	'app'			=> 'easypages',
	'allowRedirect'	=> 0,
	'out'			=> array( '#app=easypages(?:&|&)page=gamestats(?:&|&)member=(\d+)(?:&|&)newsid=(\d+)#i', 'members/$1/newsid/$2' ),
	'in'			=> array(
		'regex'		=> "#^/members/(\d+)/newsid/(\d+)#i",
		'matches'	=> array(
			array( 'app', 'easypages' ),
			array( 'page', 'gamestats' ),
			array( 'member', '$1' ),
			array( 'newsid', '$2' )
			),
		),
	),

 

По хорошему, конечно, его надо было добавить в furlTemplates приложения easypages. Но в members есть шаблон members_list который ему соответствует, чтобы исключить его перехвата добавим его в furlTemplates members первый в списке.

  • Автор

Спасибо, получилось

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.