[英].htaccess mod_rewrite rule not working
我正在尝试使mod-rewrite在htaccess文件中工作。
我试图获得的URL是:
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
在将以下内容添加到虚拟主机后:
<Directory "{path}">
Options All
AllowOverride All
Order allow,deny
Allow from all
</Directory>
而且我还必须清除浏览器缓存,因为它也会引起问题。 一旦采取了这两项行动,下面的anubhava答案就可以解决我的问题。
您的正则表达式缺少量词+
,这将导致第二个捕获组失败,因为它仅预期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
相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.