0

刚,

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

我在 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以便将 URL 从 www.example.com/wiki/index.php?=title=Garden_Store 缩短到 www.example.com /wiki/Garden_Store

  2. 如果用户应该选择键入 URL 的语法,仍然允许使用 www.example.com/wiki/index.php?=title=Garden_Store。(我相信 mediawiki 可以同时使用两个样式 URL。如果不可能,那么我将被迫跳过短 URL 并使用其中包含变量的样式。)

  3. 最后,将示例中 URL 中的特殊字符字符串化,例如 www.example.com/wiki/index.php?=title=Garden,_Store! 应该是这个 www.example.com/wiki/index.php?=title=Garden_Store 。

另一个例子可能是 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 中的空格被下划线替换。

非常感谢你把一个新手带到了这个终点线的最后一点。

干杯。

杰森

4

1 回答 1

0

类似以下规则的东西应该可以满足您的需要:

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

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

于 2012-11-03T09:54:41.403 回答