繁体   English   中英

.htaccess mod_rewrite规则不起作用

[英].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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM