URL重写/正则表达式调试
问题描述:
我需要一组新鲜眼睛。我很难找出问题所在。URL重写/正则表达式调试
在文件夹X我有在它下面的两行.htaccess文件:
RewriteEngine on
RewriteRule ^([A-Za-z0-9\.-]+)/?$ item-display.php?bibid=$1 [NC,L]
我的理解是,在该目录中任何事情都会被重定向到该项目,显示页面。问题是在项目显示页面上,回显了bibid输出的“显示项目”的值。所以不知何故我重定向从: http://localhost/test/cat/item/14056a 到:http://localhost/test/cat/item/item-display.php?bibid=item-display
任何想法?
干杯
答
你必须排除要重定向到作为也由模式匹配的文件:
RewriteCond %{REQUEST_URI} !/item-display\.php$
RewriteRule ^([A-Za-z0-9\.-]+)/?$ item-display.php?bibid=$1 [L]
答
试试这个
RewriteEngine on
RewritePath /test/cat/item
RewriteRule ^([A-Za-z0-9\.-]+)/?$ item-display.php?bibid=$1 [L]
我认为问题是,它是着眼于整个URL,而不仅仅是最后一个项目ID的一部分。
答
该请求经过了子处理,因此它提取了我所假定的重写的URL的文件名部分。尝试添加NS标志。
看到更新的答案 – 2009-04-15 13:32:47
我觉得你RewriteBase后...它没有出现改变结果虽然。获取到正确的页面,然后认为bibid被设置为'display-item'。我正在阅读RewriteBase,希望能够在文档中找到一些东西。 – 2009-04-15 13:53:15