【发布时间】:2012-12-28 20:40:22
【问题描述】:
基本上,我在我的网站上工作是为了对 SEO 友好。我想实现以下目标:
- 将网址重写为漂亮的网址
- 删除多个斜杠(例如,
example.com/////something///到example.com/something/ - 将 www 版本重定向到非 www 版本。
- 从所有 url 中隐藏 index.php 文件
- 从旧网址(
/?id=something/重定向到新网址/something/)
我想出了这个.htaccess 代码:
RewriteCond %{THE_REQUEST} //
RewriteRule .* $0 [R=301]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteCond %{QUERY_STRING} ^id=([a-z0-9\/-]+)
RewriteRule ^(.*)$ http://example.com/%1? [R=301]
RewriteRule ^index.php(.*)$ /$1 [R=301]
RewriteRule ^([a-z0-9\/-]+)$ /?id=$1 [L]
...虽然它正在工作,但它有一个副作用:链重定向,例如。 example.com/?id=something////// -> example.com/something////// -> example.com/something/
那么有没有办法重写或修改此代码,使其只重定向一次到首选版本的 url?
【问题讨论】:
-
首先将 L 标志添加到所有重写规则。然后,让我们知道会发生什么。
-
@felipe:我已将 L 标志添加到所有、任何单个并更改了这些组合中的顺序,但没有成功。
标签: apache .htaccess mod-rewrite redirect