mod_rewrite将特殊字符串起来并同时缩短URL

时间:2012-11-03 08:40:41

标签: mod-rewrite mediawiki

很长一段时间系统管理员,但第一次到这个优秀网站的海报,所以,请温柔。

我在REGEX尚未表现出色,并试图在我们的内部托管" mediawiki"上同时做两件事。现场。

我们正在运行一个非常简单的jane LAMP堆栈(centOS 5.x,Apache 2.x,PHP 5.x)。我们是根。我们使用的是/etc/httpd/conf.d/wiki.conf而不是使用.htaccess。物理路径是/ var / www / html / wiki /

我在下面的某些组合中得到了部分成功的结果,但我还不够好,无法在那里完成任务。我知道我希望这个网站上有一些mod_write铆钉。

  1. 我正在关注此方法https://www.mediawiki.org/wiki/Manual:Short_URL/Apache,以便将网址从www.example.com/wiki/index.php?=title=Garden_Store缩短为www.example.com/wiki / Garden_Store

  2. 如果用户应该选择输入网址的语法,
  3. 仍允许使用www.example.com/wiki/index.php?=title=Garden_Store。 (我相信mediawiki可以同时使用两种风格的URL。如果不可能,那么我将被迫跳过短URL并使用带有变量的样式。)

  4. 最后,来自示例中的网址的字符串特殊字符,例如www.example.com/wiki/index.php?=title=Garden,_Store!应该是这个www.example.com/wiki/index.php?=title=Garden_Store。

  5. 另一个例子可能是www.example.com/wiki/index.php?=title=Garden_Store,_Inc。应该是www.example.com/wiki/index.php?=title=Garden_Store_Inc

    最后一个例子,我们要确保我沟通得好,会得到这个" / title = Garden%20Store,%20Inc"但是想要这个" /index.php?title = Garden%20Store%20Inc"据我所知,这些空格被mediawiki内部的下划线所取代。

    非常感谢你们为这位新人带来了最后一点到终点线。

    干杯。

    杰森

1 个答案:

答案 0 :(得分:0)

以下规则应符合您的要求:

RewriteRule ^(.*)\ (.*)$ $1\_$2 [L]
RewriteRule ^(.*)[^a-zA-Z0-9\/\._](.*)$ $1$2 [L]

第一条规则确实用下划线替换空格,另一条线条剥离您不想留在结果URL中的所有字符。请注意,如果需要,您可能需要添加更多内容。