【发布时间】:2015-11-07 10:23:08
【问题描述】:
因为在谷歌网站管理员中我有 550.000 个未找到的页面 - 404 - 我想重定向到搜索页面。
对用户来说是用户犯规,需要去搜索页面,但对我来说真的很复杂,因为我需要从404 url中提取搜索词组:
这里有 2 种 404 错误的 url,需要重定向。
-
DOMAIN/movie/12298295-Iron-Man-3
DOMAIN/serie/15108-The-Walking-Dead/seasons/3/episodes/10
当然,我需要提取电影或系列的JUST THE NAME,然后重定向到这个网址
-
DOMAIN/search?q=Iron-Man-3
DOMAIN/search?q=The-Walking-Dead
这是部分 URL: “电影”只有 4 个部分:
-
DOMAIN - 确切地说,是网站的域名
/movie/ - 根据内容类型(电影或连续剧)创建
12298295- 是这个项目的 ID,可以是 - 1 - 到 无限
Iron-Man-3 - 电影的名称(是我想要的)
对于“系列” - 与电影相同,但最后可以有更多部分,完整的 URL 可以是:(所有这些 url,对于没有 404 的普通页面,都可以)
-
DOMAIN/serie/15108-The-Walking-Dead/seasons/3/episodes/10 - 链接到剧集页面
DOMAIN/serie/15108-The-Walking-Dead/seasons/3/ - 链接到某个季节页面
DOMAIN/serie/15108-The-Walking-Dead/ - 链接到该系列的首页
请注意,我需要重定向这个 url,只要结果是 404 页面(ErrorDocument 404),因为所有页面都使用相同类型的 url。
这是我的实际 .htacces
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php[^/] /$1? [L,R=301,NC,NE]
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^(.*?)index\.php(?:/(.*))?$ /$1$2? [L,R=301,NC,NE]
RewriteCond %{QUERY_STRING} ^q= [NC]
RewriteRule ^busqueda\b /busquedas [R=301,L,QSA]
# Redirect Trailing Slashes...
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
非常感谢您的帮助
【问题讨论】:
标签: .htaccess mod-rewrite redirect url-rewriting rewrite