Задать вопрос
@betrachter

Как правильно настроить роутинг в Yii2?

Всем привет, помогите, пожалуйста, победить проблему

Часть первая.
Есть локальный сервер на IIS, на котором развернут yii2-basic. (http:// myserver)
В настройках сервера указана корневая директория /web и в этой же папке лежит штатный конфиг:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="false" />
        <httpRedirect enabled="false" destination="" childOnly="true" httpResponseStatus="Permanent" />
        <rewrite>
            <rules>
				<rule name="Hide Yii Index" enabled="true" stopProcessing="true">
				  <match url="." ignoreCase="false" />
				  <conditions>
				  <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
				  <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
				  </conditions>
				  <action type="Rewrite" url="index.php" appendQueryString="true" />
				  </rule>
            </rules>
        </rewrite>
</system.webServer>
</configuration>


Сайт работает, все отлично.

Часть вторая.
Есть сторонний сервер, на котором настроен проброс "http:// anotherserver/dom" на "http:// myserver"
Настроен baseUrl под оба ресурса:
'baseUrl' => preg_match("/172(.*)/", $_SERVER['REMOTE_ADDR']) ? '' : '/dom',

Локальный сайт работает корректно.
При заходе по http:// anotherserver/dom я вижу сайт, все отображается корректно. Ссылки в шапке дефолтного меню выглядят: http:// anotherserver/index.php?r=site%2Fabout (пропущен /dom). Однако, если руками в ссылку добавить /dom, то я попадаю, куда надо.

Если активировать urlManager:
urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'enableStrictParsing' => false,
            'rules' => [
            ],
        ],


то при заходе на http:// anotherserver/dom ссылки имеют вид http:// anotherserver/dom/site/about, но при переходе по ссылке /dom вырезается и, соответственно, я попадаю не туда.

Где косяк? Где недонастроил?

Заранее спасибо большое.
  • Вопрос задан
  • 224 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
@betrachter Автор вопроса
Проблема решилась изменением маски rewrite

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="false" />
        <httpRedirect enabled="false" destination="" childOnly="true" httpResponseStatus="Permanent" />
        <rewrite>
            <rules>
		<rule name="Hide Yii Index" enabled="true" stopProcessing="true">
		 <match url="^(.*)\?*$" ignoreCase="false" />
		   <conditions>
		     <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
 		     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
		   </conditions>
		 <action type="Rewrite" url="/index.php/{R:1}" appendQueryString="true" />
		 </rule>
            </rules>
        </rewrite>
</system.webServer>
</configuration>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы