![]() |
1
22
首先,您必须在现有的URL中实现一致性。基本上,您必须规范化所有现有名称,以始终使用破折号。好吧,你做到了。 我们从以下假设开始: URL的大致形式如下: http://example.com/articles/what-ever/really-doesnt_matter/faulty_article_name
其中只有URL位于
非常更新,有一些实际工作的东西对于Apache:
这通常是受到盖普回答的启发。
第一个
然后我添加
然后,虽然在URL中至少有两个下划线,但我们仍然在规则中循环。当我们最后只剩下一个下划线时,第二个规则开始,用破折号替换它,并执行永久重定向。 呸。 |
![]() |
2
13
试试这个:
第一个规则一次替换一个下划线,直到只剩下一个或更少的下划线。最后一个规则将替换最后一个欠crore并执行外部重定向。 |
![]() |
3
2
一种可能不同的思考方法: 我假设您的“旧格式”和“新格式”对于这个想法将在不同的目录中,如果它们不是,您可能会考虑使新格式具有不同的目录名。 例如: http://site.com/articles/2008/12/31/new_years_celebration http://site.com/article/2008/12/31/new-years-celebration
在这种情况下,您可以使用mod“rewrite”检测“旧目录”中的任何内容,并将其重定向到
尽管在第二次思考中,您的mod_rewrite可能会找到如下内容: RedirectRule /articles/(.*_.*) /redirector.php?article=$1
把任何东西和
在redirector.php中,您可以
|
![]() |
4
1
方法如下: http://yoast.com/apache-rewrite-dash-underscore/ 基本上,它将URL分隔为下划线两侧的标记,并用替换的下划线再次重写标记。问题是,它一次只替换一个下划线;它将重定向到一个更接近但不完全正确的URL,这将再次重定向到一个更接近但可能仍然不正确的URL… 它建议通过具有多个重写条件和规则以及连续更多的下划线和标记来修复多个重定向,但这需要与最长标题中的下划线一样多的条件和规则。 但是,如果可以,请确保添加任何限定符,因为规则可能会替换不希望更改的路径(如图像文件)。 |
![]() |
5
1
mod rewrite如何知道实际的url应该是什么?您可以重写所有文章以使用下划线或破折号,但没有办法
例如, /I_Like_Bees is stored as /path/i_like_bees /I-like-flowers is stored as /path/i-like-flowers
你想要
如果您一致地存储了所有文章,您可以轻松地使重写规则生效。相反,您可能需要编写一个脚本来检查目录是否存在,并执行301重定向到正确的位置。 |
![]() |
DotFX · RegEx捕获关键字前但括号后的所有内容 5 月前 |
![]() |
Andrus · 如何在sql中查找第二个匹配项 5 月前 |
![]() |
iato · 确保正则表达式不从命名材料中的数字中提取 6 月前 |
![]() |
vr8ce · 非成对标记中特定字符的正则表达式 6 月前 |
![]() |
MARTIN · 交换第一个和最后一个单词,反转所有中间的字符 6 月前 |
![]() |
Carsten · 使用最近的搜索模式更改文本块 6 月前 |