Mod rewrite 重写url的一部分

Mod rewrite 重写url的一部分,mod-rewrite,url-rewriting,Mod Rewrite,Url Rewriting,我在我的网站上有这种类型的URL(你可以看到破折号的使用是非常随机的): 我想用以下格式重写它们 http://www.example.com/my-sub-directory/this-is-the-page-title-excellent-title 正如您所看到的,原始url中的破折号是可变的。这可能吗?我可以对所有URL都这样做,还是只在全局范围内这样做 你能不能也提供一个简单的例子,说明如何重写这篇文章 http://www.example.com/my_sub_directory/

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

我想用以下格式重写它们

http://www.example.com/my-sub-directory/this-is-the-page-title-excellent-title
正如您所看到的,原始url中的破折号是可变的。这可能吗?我可以对所有URL都这样做,还是只在全局范围内这样做

你能不能也提供一个简单的例子,说明如何重写这篇文章

http://www.example.com/my_sub_directory/ 
进入这个

http://www.example.com/my-sub-directory/
非常感谢

这可能吗?我可以对所有URL都这样做,还是只在全局范围内这样做

是,但不使用
.htaccess
规则。如果您对系统或vhost配置具有root访问权限,则可以使用
重写映射prg:
。然而,你能做的是一些人这样想:

RewriteEngine On
RewriteBase   /

RewriteRule ^(.*?--.*)$        remapper.php?url=$1  [L]
然后使用remapper脚本munge url参数并发出
标题(“位置:…”)
以执行302重定向到“标准化”URI

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

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

“优秀标题”前的三连字符是要求吗?你怎么知道这不是“这是页面标题”的一部分?这只是在url中随机使用破折号的一个示例,我将更新问题以提供更多示例。我看不到最后两个url之间的差异。谢谢你的回答。有没有什么方法可以像普通的重写一样,不执行302临时重定向?只有当您拥有对系统或vhost Apache config的root访问权限时,才可以使用重写映射。否则——不会。302重定向是永久重定向,因此客户端浏览器将缓存该重定向,并且每个客户端只执行一次。确定。这里唯一的一件事是,我不想丢失所有被谷歌索引的页面。旧站点正在使用旧的URL,而新站点正在使用新的URL。所以,我唯一真正关心的是,谷歌仍然能够找到旧的网址。这是一个不同的问题添加到您的旧网址。谷歌将跟踪并解决新旧问题。必应、雅虎和其他主要引擎也是如此。如果你不想重定向,那么给自己买一个VPS,你可以使用RewriteMaps:-)
RewriteRule my_sub_directory/  my-sub-directory/    [L]