使用通配符重定向到.htaccess

时间:2013-03-22 20:44:34

标签: apache .htaccess mod-rewrite redirect rewrite

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

我尝试使用以下内容,但*因某些原因无效。

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

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

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

无论如何,请告诉我如何在这种代码中表达通配符。

2 个答案:

答案 0 :(得分:3)

使用mod_alias,您可以改为使用RedirectMatch

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

这匹配所有与/threads/*.343/匹配的网址,*/以外的任何字符。

答案 1 :(得分:1)

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

即可

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

343 343
349 349
518 518

2 - 然后在httpd.cond中定义一个RewriteMap,如下所示:

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

3 - 然后通过httpd.conf启用mod_rewrite和.htaccess,然后将此代码放在.htaccess目录下的DOCUMENT_ROOT中:

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

RewriteRule ^threads/(.*)$ http://myotherdomain.com/threads/${idmap:$1} [L,NC,R=301]