我参与了yii webapp中的url seo。我无法达到预期的效果。Yii seo url重写urlManager和.htaccess
首先,该网站是多语言。我创建了一个语言切换器,我在URL中传递“lang”参数作为GET值。
以后,我就跟着这个网址维基:
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参数。
器(get语言URL参数被称为 “郎”)
我需要的是:
如果有人访问主网址 - www.mysite.com - 我需要添加语言在网址,所以我可以有不同的网址基于这种方式的语言: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 -other-get-params]或
[www.mysite.com/controller/id/1?other-params] - >当动作是查看时
请问,有人可以提供我要做的一步一步的过程? 谢谢
问候, 弗朗切斯科
你好,感谢您的回复,但您的规则,我还没有达到我的目标。另外,网站/索引路由在www.mysite.com/lang/en(我不想lang)中进行了转换,导致404错误,但未找到lang控制器,但lang是参数,而不是控制器 – user2548436