繁体   English   中英

使用 apache 中的 .htacces 文件清理 url 重写

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

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