[英]Clean url rewriting using .htacces file in apache
我有一个网站,我在那里写博客...在我的 blog.php 页面上,我有来自不同类别的帖子。 当用户点击一个链接时,它会被重定向到带有$_GET['title']
变量的 /blog-details.php 页面。
我试过的
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
#remove .php from all pages
RewriteRule ^([^\.]+)$ $1.php [NC]
#blog/title-here
RewriteRule ^blog/([A-Za-z0-9-\+]+)/?$ /blog-details.php?title=$1 [NC,L,QSA]
最后一行给了我类似的东西
xyz.com/blog-details?title=hello-world
我想要实现的是
xyz.com/blog/hello-world
不喜欢
xyz.com/blog-details?title=hello-world
谢谢,期待解答。
处理 .htaccess 文件时必须考虑的一件重要事情是,您必须检查路径是目录还是文件,然后继续执行操作。
我使用了您的代码并且它运行正常,但只是添加了 -f 和 -d 检查以确保这不会影响其他页面。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
#remove .php from all pages
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC]
#blog/title-here
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^blog/([A-Za-z0-9-\+]+)/?$ /blog-details.php?title=$1 [NC,L,QSA]
要测试您的 .htaccess 文件和一些虚拟 URL,我强烈建议您查看 MadeWithLove
https://htaccess.madewithlove.be/
这将使您拥有一个测试输入 URL,并查看是否获得了正确的输出 URL(您的服务器将读取的实际 URL)。
话虽如此,我建议您研究未来项目和自我开发的路由。 我建议检查的框架是 PHP 的无脂肪框架 (f3)。 它非常容易上手,您可以在 2 天内学会它,并且通过包含路由、ORM、全局变量、简化的 SQL 查询以及许多其他本质上让您成为 PHP 开发人员的功能,节省了大量开发时间,而不是框架开发人员。
使用以下方法:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^blog/([0-9a-zA-Z_=-]+)$ blog-details.php?title=$1 [NC]
</IfModule>
然后你可以在页面上访问像 $_GET['title'] 这样的标题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.