3

如何在 .htaccess 文件中进行通配符重定向?

我尝试使用以下方法,但由于*某种原因不起作用。

redirect 301 /threads/*.343/ http://myotherdomain.com/threads/*.343/

我不能使用 mod_rewrite,因为我需要做 7000 个这样的重定向,显然,当我尝试其中的一半时,我的服务器抛出了 500 错误配置错误。

因此,编写 7000 行上述代码似乎不那么密集。

无论如何,请让我知道如何在那种代码中表达通配符。

4

2 回答 2

3

使用 mod_alias,您可以RedirectMatch改用:

RedirectMatch permanent ^/threads/[^/]+\.343/$ http://myotherdomain.com$0

这匹配所有匹配 的 URL /threads/*.343/*是除 之外的任何字符/

于 2013-03-22T20:59:52.710 回答
1

您不需要 7000 条单独的重写规则,只需使用RewriteMap

1 - 首先在 2 列中创建一个包含所有 7000 个选定 ID 的文本文件,如下所示:

343 343
349 349
518 518

2 - 然后像这样定义一个 RewriteMap httpd.cond

RewriteMap idmap txt:/path/to/file/map.txt

3 - 然后通过启用 mod_rewrite 和 .htaccesshttpd.conf然后将此代码放在您.htaccessDOCUMENT_ROOT目录下:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^threads/(.*)$ http://myotherdomain.com/threads/${idmap:$1} [L,NC,R=301]
于 2013-03-22T20:53:18.013 回答