只重写网址的一部分

时间:2012-03-05 20:54:28

标签: mod-rewrite url-rewriting

我的网站上有这种类型的网址(因为你可以看到破折号的使用非常随机):

http://www.example.com/my_sub_directory/this--is--the-page-title---excellent-title
http://www.example.com/my_sub_directory/this-is--the--page-title--excellent-title
http://www.example.com/my_sub_directory/this-is-the-page----title---excellent---title

我想用以下格式重写它们

http://www.example.com/my-sub-directory/this-is-the-page-title-excellent-title

正如您所看到的,原始网址中的短划线数量是可变的。这可能吗?我可以为所有网址执行此操作,还是可以全局执行此操作?

您能否提供一个关于如何重写此

的简单示例
http://www.example.com/my_sub_directory/ 

进入这个

http://www.example.com/my-sub-directory/

非常感谢

1 个答案:

答案 0 :(得分:0)

  

这可能吗?我可以为所有网址执行此操作,还是可以全局执行此操作?

是的,但没有.htaccess规则。如果您具有对系统或vhost配置的root访问权限,则可以使用RewriteMap prg: 。不过你能做的就是这样想:

RewriteEngine On
RewriteBase   /

RewriteRule ^(.*?--.*)$        remapper.php?url=$1  [L]

然后使用重映射脚本来修改url参数并发出header("Location: ...")来重定向到“规范化”URI。

Re:my_sub_directory/重写,这对于固定目录字符串来说是微不足道的,但是一般情况需要按上述方式处理:

RewriteRule my_sub_directory/  my-sub-directory/    [L]