我需要将表单subpage.php?sid = 123的URLredirect到指定页面。
subpagemap.txt存在于根目录下,只包含以下由Unix行结尾分隔的\ n:
1 a 2 b 3 c
.htaccess如下所示:
Options +FollowSymlinks RewriteEngine On RewriteBase / RewriteMap subpagemap txt:subpagemap.txt RewriteCond %{THE_REQUEST} subpage\.php\?sid=([0-9]*) RewriteRule ^.*$ ${subpagemap:%1|home}? [R=301,L,NC]
问题是我得到一个500内部服务器错误。
当我注释掉.htaccess的第4行时,第5行工作正常,我redirect到默认映射 – / home,这表明它是映射文件,这是问题所在。
一旦我把RewriteMap行回来,我得到一个500内部服务器错误。 我没有访问服务器日志和RewriteLog似乎并没有工作。
我也尝试了下面的replace,一起来试图隔离这个问题:
RewriteMap subpagemap txt:/subpagemap.txt RewriteCond %{THE_REQUEST} subpage\.php\?sid=([0-9]*) RewriteRule ^.*$ /${subpagemap:1|home} [R=301,L,NC]
任何想法可能是什么问题?
实际上,即使服务器支持它,问题在于你正在尝试在每个目录上下文中定义RewriteMap(例如,在.htaccess文件中),这是不允许的: http : //httpd.apache.org/docs /1.3/mod/mod_rewrite.html#RewriteMap
将定义移动到服务器或虚拟主机configuration,它应该工作。
我仍然认识到你可能已经在一年半的时间里想通了:)
我发现答案是服务器主机不支持RewriteMap。
浪费了5个小时左右的debugging时间。