遇到RewriteRule语法和配置问题,具有挑战性

时间:2013-12-19 18:12:40

标签: apache mod-rewrite

我真的在努力学习重写规则的语法。我希望你能提供帮助。

我使用节点包模块来创建超级ajaxy网站的一堆html快照。该模块在名为URL的指令中输出快照,以便稍后与escape_fragment重写规则一起使用。所以exampledomain.net/a45.php?lang=eng输出为./snapshots/a45.php?lang=eng/index.html。因此,要进入该目录,我必须逃避特殊字符。

我正在尝试将http://testdomain.net/a45.php?lang=eng重写为http://testdomain.net/snapshots/a45.php?lang=eng/index.html,但我无法让我的重写规则发挥作用。

这是我尝试过的语法: 在子目录<。p>中的.htaccess文件中

Options +FollowSymLinks
RewriteEngine On
ReWriteBase /var/www/vhosts/testdomain.net/httpdocs/secure/clients/amg/3dot0
RewriteRule ^a45\.php?lang=eng$ /snapshots/a45.php?lang=eng/index.html

我也尝试过使用RewriteBase和不使用RewriteBase。 我也尝试了与上面相同的第二个网址转义并在第一个网址上有几个不同的字符都无济于事... OH和我确保在整个httpdocs目录以及主vhost.conf文件中启用Allowoverride all - 我知道该指令正在工作因为选项+索引允许我浏览整个树中的目录。

非常感谢任何建议或线索!

1 个答案:

答案 0 :(得分:1)

  1. 包含字符的目录名称? = /不会被喜欢。尽量避免使用它们。

  2. 重写的目的是从其他地方运行另一个页面,而不是将某些内容转储到新目录中。那是你想要做的吗?在/snapshots/a45.php?lang=eng/目录中,您告诉服务器要运行index.html。

  3. RewriteRule无论如何都不会看到查询字符串(?lang = eng)。的?告诉它p是可选的。