Я участвую в url seo в yii webapp. Я не могу достичь желаемого результата.Yii seo url rewrite urlManager и .htaccess
Прежде всего, сайт является многоязычным. Я создал языковой коммутатор, передаю параметр «lang» как значение GET в URL-адресе.
Тогда я следовал вики по этому адресу:
http://www.yiiframework.com/wiki/294/seo-conform-multilingual-urls-language-selector-widget-i18n/
- Шаг 1) я создать класс urlManager
- Шаг 2) Редактировать мой контроллер
- Шаг 5) Редактировать мой конфигурационный файл
Для шага 5 я использую следующий код:
'urlManager' => array(
'class' => 'application.components.UrlManager',
'urlFormat' => 'path',
'showScriptName' => false,
'urlSuffix'=>"/",
'rules' => array(
'<lang:(de|it|en|fr|es)>'=>'',
'<lang:(de|it|en|fr|es)>'=>'site/index',
'<lang:(de|it|en|fr|es)>/<action:(!index)>/*' => 'site/<action>',
'<lang:(de|it|en|fr|es)>/<controller:\w+>/<id:\d+>' => '<controller>/view',
'<lang:(de|it|en|fr|es)>/<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<lang:(de|it|en|fr|es)>/<controller:\w+>/<action:\w+>/*' => '<controller>/<action>',
),
),
И мой .htaccess такое же, как юй по умолчанию .htaccess
<Files .htaccess>
order allow,deny
deny from all
</Files>
Options All -Indexes
Я никогда ничего не изменилось.
Теперь я пробовал разные правила для urlManager и пытался добавить другие правила в htacces без успеха.
Моя проблема заключается в том, что некоторые из страниц разбиваются на ошибку 404, то же самое для таких ресурсов, как изображение или сценарий. Если я проверяю запрашиваемый ресурс url от инспектора элемента, я вижу, что запрошенный url переписывается как для URL-адреса сайта (это правильное поведение?) Я также попытался поместить весь проект под корневую подпапку, чтобы создать тестовую среду, отличную от производства, результат хуже, из-за подпапки. Кроме того, если я нажимаю на ссылку на главную страницу, система перенаправляет меня на www.mysite.com/lang/en
Кроме того, я добавил поведение, которое извлекает язык на основе ip или статически статично, поэтому на конец обработки запроса, у меня всегда есть код языка для ввода в качестве параметра get.
(Параметр языка URL GET называется "языки")
Что мне нужно, это:
если кто-то посетить главный URL - www.mysite.com - мне нужно, чтобы добавить язык в URL-адресе, поэтому у меня может быть другой URL-адрес на основе языка таким образом: www.mysite.com/it/, www.mysite.com/en/ и т. д.
так же, как указано выше для URL-адреса, создайте как это Yii :: app() -> createUrl ('')
если кто-то посетить www.mysite.com/index.php?r=site/index же, как и выше, и удалить index.php
индекс удаления.PHP и сайт во всей ситуации
любого типа URL всегда заканчивается символом/(также, чтобы избежать дублирования контента, для этого я добавил «urlSuffix» => «/»)
для других контроллеру мне нужно удалить действие просмотра (но при этом другое) - и когда присутствует «id» как часть URL-адреса таким образом:
[www.mysite.com/controller/action/id/1?here -другие-get-params] ИЛИ
[www.mysite.com/controller/id/1?other-params] -> когда действие является видом
Пожалуйста, можете ли вы предоставить пошаговую процедуру того, что я должен делать? Спасибо
С уважением, Франческо
Привет и спасибо за ваш ответ, но с вашим правилом, я не достиг своей цели. В зависимости от маршрута сайт/индекс был преобразован в www.mysite.com/lang/en (я не хочу lang) и приводит к ошибке 404, контроллер lang не был найден, но lang является параметром, а не контроллером – user2548436