簡體   English   中英

替換URL中的字符時,htaccess 301重定向-Helicon ASAPI ReWrite模塊

[英]htaccess 301 redirect while replacing characters in URL - Helicon ASAPI ReWrite module

我有一個正在重建的舊站點。 它不是使用文件夾結構,而是使用子域。 這些段是不同的,但是重定向本身非常簡單。 我可以這樣處理:

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 / catchy-name-goes-here。

我的問題來自決定更改URI中的分隔符。 舊文章使用下划線“ _”構建,新文章使用連字符“-”構建。

如何用連字符替換文章標題中的下划線?

嘗試以下規則:

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]

我最終不得不使用以下內容。 我不知道由於這個站點的獨特設置,這可能會影響多少人,但我想我會發布答案,以便對可能需要它的任何人提供幫助。

完整的設置是一台運行IIS和Server 2k的服務器。 該站點由幾個靜態內容頁面,vb腳本,經典ASP,點網組成,並且所有這些都與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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM