【发布时间】:2012-03-11 17:06:08
【问题描述】:
问题:
我一直在旋转我的轮子并阅读了一段时间,现在寻求一些帮助。我正在寻找一组不友好的 URL(实际上有更多的“组”,但这应该以我为例):
- domainname.com/?section=zebras
- domainname.com/?section=monkeys&id=555
并将它们转换为友好的 URL,以及在旧版本上执行 301,以便任何旧书签(和搜索引擎)仍然可以解析它们。我正在寻找的新格式是:
- domainname.com/zebras/
- domainname.com/monkeys/555
我完全打算为每个场景编写单独的 RewriteCond/RewriteRule 组合,所以我不一定需要一个超级规则来捕获我的所有场景。哦,这一切都在 .htaccess 中。
我的进步:
我最初进入重定向循环是因为我只是背靠背地执行两个 RewriteRules - 一个用于友好 URL,一个用于 301 重定向。在重定向循环周围遇到了我最喜欢的方式(到目前为止)(至少对于我的场景#1):
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{QUERY_STRING} ^section=zebras$ [NC]
RewriteRule ^.*$ http://www.domainname.com/zebras/? [R=301,NC,L]
RewriteRule ^zebras/$ /index\.php?section=zebras [NC,L]
但是,我希望有一些不仅仅适用于“斑马”的东西(例如,我希望它也适用于“狮子”),所以我试图让它更通用.我现在正在尝试的看起来像这样:
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{QUERY_STRING} ^section=([a-z]+)$ [NC]
RewriteRule ^section=([a-z]+)$ http://www.domainname.com/$1/? [R=301,NC,L]
RewriteRule ^([a-z]+)/$ /index\.php?section=$1 [NC,L]
但是,这不起作用。我想我有一些“不太正确”的东西,我只是不知道它是什么——我在某处遗漏了一些东西或格式不正确。提前很抱歉描述冗长,只是想清楚一点。
【问题讨论】:
标签: mod-rewrite url-rewriting http-status-code-301 seo