我有一个正在重建的旧网站。它使用的是子域,而不是使用文件夹结构。细分市场不同,但重定向本身非常简单。我可以像这样处理它:
RewriteRule ^segment/blog/view$ http://blogs.site.com/segment/article [R=301,NE,NC,L]
RewriteRule ^segment/blog$ http://blogs.site.com/segment [R=301,NE,NC,L]
所以,如果我有www.site.com/segment/blog,它现在将转到blogs.site.com/segment。 如果我有www.site.com/segment/blog/view/catchy_name_goes_here,目前它会将其重定向到blogs.site.com/segment/article/catchy_name_goes_here,我需要它到这里:blogs.site.com/segment/article /朗朗上口的名称 - 去 - 在这里。
我的问题来自决定更改URI中的分隔符。旧文章使用下划线'_'构建,新文章使用连字符' - '。
构建如何用连字符替换文章标题中的下划线?
答案 0 :(得分:0)
请尝试以下规则:
RewriteRule ^/segment/blog$ http://blogs.site.com/segment [R,I,L]
# replace _ by - repeatedly
RewriteRule ^(/segment/blog/view)/([^_]*)_+(.*)$ /$1/$2-$3 [I,N,U]
# all _s gone, now do a redirect
RewriteRule ^/segment/blog/view/([^_]+)$ http://blogs.site.com/segment/article/$1 [R,I,L,U]
答案 1 :(得分:0)
我最终不得不使用以下内容。由于此网站的独特设置,我不知道有多少人可能会受到影响,但我想我会发布答案,以便它可以帮助任何可能需要它的人。
对此的完整设置是运行带有Server 2k的IIS的服务器。该网站由几个静态内容页面,vb脚本,经典ASP,dot Net组成,这些都与ExpressionEngine页面交织在一起。至少可以说是一团糟。最重要的是,Helicon Tech的ASAPI重写模块版本3正在服务器上运行.htaccess使用。没有任何子表达,分组等正在接受或被跟踪/处理。 index.php规则也被绕过了。
总而言之,我最终得到了以下内容,解析了我需要的一切。
RewriteRule ^index.php/segment/blog/view/([^_]*)_+(.*)$ http://www.site.com/index.php/segment/blog/view/$1-$2 [R,NC]
RewriteRule ^index.php/segment/blog/view/([^_]*)$ http://blogs.site.com/segment/article/$1 [R=301,I,L,U]
RewriteRule ^segment/blog$ http://blogs.site.com/segment [R=301,NE,NC,L]
RewriteRule ^/segment/blog$ http://blogs.site.com/segment [R,I,L]