如何在.htaccess文件中进行通配符重定向?
我尝试使用以下内容,但*
因某些原因无效。
redirect 301 /threads/*.343/ http://myotherdomain.com/threads/*.343/
我不能使用mod_rewrite,因为我需要做7000次这些重定向,显然,当我尝试其中一半时,我的服务器抛出了500个错误配置错误。
因此,似乎编写7000行上述代码的方式不那么密集。
无论如何,请告诉我如何在这种代码中表达通配符。
答案 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]