0

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

我已经阅读了此处的其他帖子并尝试应用替代模块,但我无法从中进行单个重定向实际上按预期工作:-/

要确认我的设置:

我正在使用包含 .conf 来为正确的虚拟主机更新我的 httpd.conf。在运行 /scripts/rebuildhttpdconf (和“服务 httpd 重新启动”)后,它会被正确应用,并且 httpd.conf 中的相应包含路径引用被取消注释,这告诉我它正在按预期找到包含文件。包含文件称为“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 不会执行任何重定向 - 无论是否注释掉前两个条件。

我尝试了许多变体,有时能够完全打破它(重写循环错误、白屏,甚至重定向工作的情况,但不是转到maintenance2.html,而是将/home/example/public_html附加到url - ???) - 但我无论如何都无法让上面的示例按预期重定向。

我尝试从 VPS 的主机获得帮助,但他们不提供对此类修改的支持。

我希望有人可以看看上面的内容,也许会看到我遗漏的一些明显的东西?任何想法表示赞赏...

4

1 回答 1

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]

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

于 2015-02-06T23:25:13.783 回答