使用txt文件的apache rewritemap - 匹配失败

时间:2015-02-06 20:09:30

标签: apache rewritemap

我正在尝试使用简单的txt文件为特殊项目建立一个重写图,该文件最终将包含大约150个重定向。

我已经阅读了其他帖子,并尝试应用备用mod,但我无法从此实际按预期进行单一重定向: - /

确认我的设置:

我正在使用include .conf更新我的httpd.conf以获取正确的虚拟主机。在运行/ scripts / rebuildhttpdconf(以及'service httpd restart')时,它会在没有错误的情况下应用,并且httpd.conf中相应的Include Path引用将被取消注释,这告诉我它正在按预期找到包含文件。 Include文件名为“redirecttest2.conf”,包含:

RewriteMap redirect2 txt:/home/example/public_html/redirecttest/redirect2.txt

在上面引用的位置,我有'redirect2.txt'文件,出于测试目的,它包含:

maintenance.html    http://www.example.com/maintenance2.html
maintenance1.html   http://www.example.com/maintenance2.html

所以我的期望是,当输入'example.com/maintenance.html'时,它会被重定向到maintenance2.html等。

在受影响域的根目录下的.htaccess文件中,我目前有以下内容:

RewriteEngine on
RewriteCond %{REQUEST_URI} !(\.(js|css|less|png|php|swf|flv|jpg))$
RewriteCond {redirect2:$1} !=""
RewriteRule ^/(.*) ${redirect2:$1} [R=301,L]

然而,这目前没有任何效果。输入example.com/maintenance.html或maintenance1.html不会执行任何重定向 - 无论是否注释掉前两个条件。

我尝试了很多变化,有时可以完全破解它(重写循环错误,白屏,甚至重定向工作的情况,但不是去维护2,它附加/ home / example / public_html到网址 - ???) - 但在任何时候我都不能按照预期重新定位上面的例子。

我尝试过从VPS的主机那里获得帮助,但是他们没有为这些修改提供支持。

我希望有人可以看看上面的内容,也许会看到一些我不知道的东西?任何想法都赞赏......

1 个答案:

答案 0 :(得分:0)

我终于能够用RewriteMap解决问题了。

在受影响域的根目录下的.htaccess文件中,我现在使用以下内容:

RewriteEngine On
RewriteCond %{REQUEST_URI} !(\.(js|css|less|png|php|swf|flv|jpg))$
RewriteCond ${redirect2:$1} >"" [NC]
RewriteRule ^(.*) ${redirect2:$1} [R=301,L]

现在似乎有效 - 至少对于基本网址而言。