修改mod重写和斜杠以及$ _GET

时间:2013-11-19 20:17:56

标签: regex apache .htaccess mod-rewrite trailing-slash

我正在尝试使用mod重写实现更好的url到我编写的php脚本,以查看从mysql数据库中提取的文件的条目名称。我使用以下代码,它工作正常。

RewriteRule ^view.doc.(.+)  index.php?doc=$1

所以基本上

view.doc.xyz whould be index.php?doc=xyz

但是,通过重写的链接查看条目中带有'/'和'\'的条目时遇到问题。

view.doc.abc/123 into index.php?doc=abc/123

或喜欢

  

view.doc.sg1 \ 123到index.php?doc = sg1 \ 123

Ether我会得到无限循环或得到404错误。我对mod重写很新,我非常感谢你对此事的任何帮助。

2 个答案:

答案 0 :(得分:0)

尝试此规则:

RewriteRule ^view\.doc\.(.+)$ index.php?doc=$1 [L,QSA,NE,NC]

答案 1 :(得分:0)

我提出了一个与@ anubhava的解决方案略有不同的解决方案,在index.php之前加一个斜杠,在Debian / Apache2上测试:

RewriteEngine On
RewriteRule ^view\.doc\.(.+)$ /index.php?doc=$1 [L,QSA,NE,NC]

它给出了:

view.doc.abc/123 => /index.php?doc=abc/123

我无法测试反斜杠\,因为没有浏览器允许我在URL中测试它而不将其转换为斜杠/。