【发布时间】:2016-11-19 17:01:50
【问题描述】:
我有一个基于 Yii2 高级模板的站点,用于替换无法针对 SEO 优化的旧站点。
在 Yii2 的 urlManager 配置中启用了对 SEO 友好的 url。
出于 SEO 的目的,我应该为带有原始查询字符串和结构的 url 从旧站点编写近 20 301 个重定向:
/index.php?p=var
/index.php?p=open_cat&cat_id=55
到 SEO 友好的 url('contoller'、'action'、'alias' 是变量):
/controller/action/alias
我试过了:
-
在前端/web/.htaccess 中:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d Redirect 301 /index.php?p=open_cat&cat_id=55 http://example.com/controller/action/alias RewriteRule . index.php
此方法无效,带有 /index.php?p=open_cat&cat_id=55 url 的页面响应 404 错误。
-
在前端/web/.htaccess 中:
RewriteEngine on RewriteCond %{QUERY_STRING} p=open_cat&cat_id=55 RewriteRule ^index.php$ /controller/action/alias [L,R=301] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
此方法将 index.php 的完整路径附加到原始路由:
http://example.com/path-to-file-from-server-root/app/frontend/web/index.php?r=controller/action/alias
我不知道如何使用 Yii2 方法为原始 url 编写正确的重定向。 另一个问题是新旧网址没有共同点。 我为所有重定向搜索统一的解决方案,因为新的 url 与不同的操作和控制器相关联。
我很乐意提供提示或解决方案。谢谢!
【问题讨论】:
-
谢谢,但问题出在另一个方面——我的站点上已经配置了漂亮的 URL,我无法在 htaccess 中编写正确的规则。似乎解决方案是通过 php 代码中的标头重定向。
标签: php .htaccess redirect seo yii2