我正在尝试让mod-rewrite在htaccess文件中工作。
我想要实现的网址是:
blog/{id}-{title}/
例如:
http://localhost/blog.php?id=12&title=this-is-a-test
会变成:
http://localhost/blog/12-this-is-a-test/
不,我一直在尝试的是:
RewriteEngine On
RewriteRule ^blog/([0-9]+)-([a-zA-Z-])/$ blog.php?id=$1&title=$2
当我转到http://localhost/blog/12-this-is-a-test/
时,我收到404错误,但如果我转到http://localhost/blog.php
,则测试页面会显示测试文字。
也许我写的规则不正确,如果是这样,任何人都可以建议编辑或有任何好的教程,我一直在阅读http://httpd.apache.org/docs/2.0/misc/rewriteguide.html但是我还没弄清楚我在哪里出错了。
非常感谢任何帮助,甚至指出我正确的方向,谢谢。
我在应用重定向规则的每个链接上都得到了这个:
http://localhost/C:/Apache/htdocs/test5/blog/1-Lorem-ipsum-dolor-sit-amet
我在下面添加了vhost:
<Directory "{path}">
Options All
AllowOverride All
Order allow,deny
Allow from all
</Directory>
我必须清除浏览器缓存,因为它也会导致问题。一旦采取了这两项行动,anubhava的答案就可以解决我的问题。
答案 0 :(得分:1)
您的正则表达式缺少量词+
,导致第二个捕获组失败,因为它只需要1个字符:
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^blog/([0-9]+)-([a-zA-Z-]+)/?$ blog.php?id=$1&title=$2 [L,NC,QSA]
最好关闭MultiViews
,因为您的php文件名blog.php
与目录名blog
相同。