即使只提供了id,我也想得到slu ..例如,我输入:
http://stackoverflow.com/questions/6421212/
加载网站后,网址变为:
http://stackoverflow.com/questions/6421212/how-to-rewrite-url-with-post-title-slug
我的意思是,即使我只输入了Id,我想要拉出slu ..
提前致谢!
答案 0 :(得分:1)
在加载的页面中,几乎立即检查slug。如果它不存在,请将其从数据库中取出(您有ID)并重定向到新的完整链接。
如果你在渲染任何HTML等之前这样做,它看起来就像是在没有重定向的情况下完成的。
如果您发布当前的htaccess,我可以修改您提供的slug所允许的内容,并且不提供slug。
答案 1 :(得分:1)
mod_rewrite不知道给定ID的右侧slug。您生成slug的应用程序确实如此。因此,您使用ID从数据库中获取slug并将其与浏览器发送的数据进行比较。如果它不匹配,则发出301重定向到完整(如果slug为空)或更正(如果slug不匹配)URL。这就是SO的运作方式。打开这些URL并查看网络检查器,看看我的意思:
http://stackoverflow.com/questions/9393455/
http://stackoverflow.com/questions/9393455/foo-bar-blah-baz
在PHP中,检查$_SERVER
超级全局,您应该能够在重写之前找到包含实际URL的变量。您可以像这样发送301
标题:
header("Location: /1234/correct-slug", true, 301);