要解决Apache RewriteMap无法正常工作以查找存在于外部文件中的网址的问题,可以按照以下步骤进行操作:
创建一个文本文件,包含需要查找的网址和对应的重写规则。例如,创建一个名为"rewrite_map.txt"的文件并添加以下内容:
/old-url /new-url
/old-url-2 /new-url-2
在Apache的配置文件中,确保已启用Rewrite模块。可以使用以下命令来启用Rewrite模块:
LoadModule rewrite_module modules/mod_rewrite.so
在配置文件中添加以下代码来设置RewriteMap:
RewriteMap mymap txt:/path/to/rewrite_map.txt
将"/path/to/rewrite_map.txt"替换为实际的rewrite_map.txt文件的路径。
在需要进行重写的位置添加以下代码来使用RewriteMap:
RewriteEngine On
RewriteRule ^(.*)$ ${mymap:$1} [R=301,L]
这将把请求的URL与rewrite_map.txt文件中的条目进行匹配,并将匹配到的重写规则应用于URL。
重新启动Apache服务器以使更改生效。
这样,当有请求进来时,Apache将搜索rewrite_map.txt文件以查找匹配的重写规则,并将请求重定向到新的URL。请确保rewrite_map.txt文件的路径和格式正确,以及服务器具有读取该文件的权限。