如何在 .htaccess 文件中进行通配符重定向?
我尝试使用以下方法,但由于*
某种原因不起作用。
redirect 301 /threads/*.343/ http://myotherdomain.com/threads/*.343/
我不能使用 mod_rewrite,因为我需要做 7000 个这样的重定向,显然,当我尝试其中的一半时,我的服务器抛出了 500 错误配置错误。
因此,编写 7000 行上述代码似乎不那么密集。
无论如何,请让我知道如何在那种代码中表达通配符。
如何在 .htaccess 文件中进行通配符重定向?
我尝试使用以下方法,但由于*
某种原因不起作用。
redirect 301 /threads/*.343/ http://myotherdomain.com/threads/*.343/
我不能使用 mod_rewrite,因为我需要做 7000 个这样的重定向,显然,当我尝试其中的一半时,我的服务器抛出了 500 错误配置错误。
因此,编写 7000 行上述代码似乎不那么密集。
无论如何,请让我知道如何在那种代码中表达通配符。
使用 mod_alias,您可以RedirectMatch
改用:
RedirectMatch permanent ^/threads/[^/]+\.343/$ http://myotherdomain.com$0
这匹配所有匹配 的 URL /threads/*.343/
,*
是除 之外的任何字符/
。
您不需要 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
然后将此代码放在您.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]