Apache 在重写规则语法和配置方面遇到问题,具有挑战性

Apache 在重写规则语法和配置方面遇到问题,具有挑战性,apache,mod-rewrite,Apache,Mod Rewrite,我真的很难理解重写规则的语法。我希望你能帮忙 我使用一个节点包模块创建了一组超级ajaxy站点的html快照。模块将快照输出到一个名为URL的目录中,供以后与escape_片段重写规则一起使用。因此,exampledomain.net/a45.php?lang=eng输出为./snapshots/a45.php?lang=eng/index.html。因此,要将cd放入该目录,我当然必须对特殊字符进行转义 我正试图重写到,但无法使我的重写规则正常工作 以下是我尝试过的语法: 在子目录中的.hta

我真的很难理解重写规则的语法。我希望你能帮忙

我使用一个节点包模块创建了一组超级ajaxy站点的html快照。模块将快照输出到一个名为URL的目录中,供以后与escape_片段重写规则一起使用。因此,exampledomain.net/a45.php?lang=eng输出为./snapshots/a45.php?lang=eng/index.html。因此,要将cd放入该目录,我当然必须对特殊字符进行转义

我正试图重写到,但无法使我的重写规则正常工作

以下是我尝试过的语法: 在子目录中的.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
我也试过有无重写基。 我也尝试了与上面相同的方法,第二个url被转义,第一个url上有两个不同的字符,但都没有用。。。 哦,我确信在整个httpdocs目录以及主vhost.conf文件中都启用了Allowoverride all——我知道该指令正在工作,因为Options+Indexes允许我浏览整个树中的目录

任何建议或线索都将不胜感激

  • 包含字符的目录名?=/不会被喜欢的。尽量避开它们

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

  • 重写规则无论如何都不会看到查询字符串(?lang=eng)。这个告诉它p是可选的


  • 类似于RewriteCond%{QUERY_STRING}^(\w+=(\w+)$RewriteRule^/path/path/%1/%2?您可以检查查询字符串中的内容,甚至可以从RewriteCond中获取它,但请小心使用任何可能混淆服务器操作系统的奇数字符,例如?、&、=、/。你到底想在这里干什么?您是要根据QS中的内容运行特定的index.html,还是尝试将某些内容转储到新目录中?我使用的是node.js脚本,该脚本调用名为html快照的节点包模块,该模块使用phantomJS序列化一组html页面。我想将我们的自定义搜索蜘蛛重定向到一个索引会话的快照。我开始尝试用Perl重命名目录,但没有成功。我还尝试使用一个regex函数来改变节点包模块输出这些目录的方式,结果几乎得到了它,但不是完全得到了。我试着像这样执行Perl脚本:find-exec./rename.pl\;这是Perl脚本:
    #/usr/bin/perl foreach$name(@ARGV){$newname=$name;$newname=~tr/!/-/;$newname=~s/%25/%/g;$newname=~s/%20/-/g;$newname=~s/%5B/[/g;$newname=~s/%5D/]/g、 $newname=~s/%2B/+//g;$newname=~s/%3F//g;$newname=~s/%3D/=/g;$newname=~s/%26/&/g;$newname=~s/%40/@/g;$newname=~s/-/g;$newname=~s/-/g;$newname=~s/,///g;#打印“$name”变成$newname\n;#打印“$newname\n”;重命名($name,temp);重命名($newname);}