我有一个外部应用程序(Gobi),它根据ISBN产生我们图书馆目录中记录的链接。应用程序可以被配置为使用我制定的URL,如:如何使用mod_rewrite重定向一个不存在的文件的请求?
http://library.example.edu/isbn/$ISBN
它则应该与实际的ISBN替换$ISBN
位,对于像这样的URL:
http://library.example.edu/isbn/9780262516778
而且有时它实际上是这样做的。但其他时候,它把我可爱的干净的网址,并把它变成像这样(拆出到单独的线路为您提供方便):
http://library.example.edu/isbn/$isbn
?sid=ybp.com:GOBI2
&genre=book
&title=EVOCATIVE+OBJECTS%253a+THINGS+WE+THINK+WITH
&isbn=9780262516778
&date=2007
&volume0
&stitle=
这些链接,然后失败,一个404错误,因为没有文件上我们的服务器名为isbn/$isbn
。漂亮的短URL由mod_rewrite通过以下方式处理:
RewriteRule ^isbn/([0-9]+)/?$ http://catalog.library.example.edu/vufind/Search/Home?lookfor=$1&type=isn&library=XMPLE [NC,R=301,L]
现在我需要想出第二条规则来处理丑陋的长变体。到目前为止,我想出了这一点:
RewriteCond %{QUERY_STRING} ^sid=ybp\.com:GOBI2&genre=book&title=(.*)&isbn=([0-9]*)&date=([0-9]*)&volume0&stitle=$
RewriteRule ^isbn/\$isbn.+ http://library.und.edu/test.php?lookfor=%2&type=isn&library=UNDAL [NC,R=301,L]
此操作失败,生成错误消息File does not exist: /var/www/isbn
。我认为发生的事情是,RewriteRule需要一个真实的文件,但我不知道。
对此提出建议?
我想你已经提到过了,但我只是想仔细检查我的理解。你的意思是说,有时候需要干净的URL,并将其转换成长整齐的URL,其中'$ isbn'字面意思是全部小写? –
@Susam是的,这是正确的。从字面上看,它有时会把所有小写字母都写出来。 –