php URL - 用斜杠替换问号和参数

Posted

技术标签:

【中文标题】php URL - 用斜杠替换问号和参数【英文标题】:php URL - replace question mark and parameter with slash 【发布时间】:2017-05-17 07:25:19 【问题描述】:

所以原始网址看起来像

website.com/post.php?id=130

使用以下 htaccess 规则,我能够从 url 中删除 .php

RewriteEngine on 
RewriteCond %REQUEST_FILENAME !-d 
RewriteCond %REQUEST_FILENAME\.php -f 
RewriteRule ^(.*)$ $1.php

现在网址看起来像这样

 website.com/post?id=130

现在我希望用斜杠替换“?id=”以使 url 看起来像

website.com/post/130

这里有什么建议吗?

【问题讨论】:

试试这个http://blogs.shephertz.com/2014/05/21/how-to-implement-url-routing-in-php/ 【参考方案1】:

你需要一个额外的规则:

RewriteEngine on

RewriteCond %REQUEST_FILENAME -d [OR]
RewriteCond %REQUEST_FILENAME -f
RewriteRule ^ - [L]

RewriteCond %DOCUMENT_ROOT/proj1/$1.php -f
RewriteRule ^([\w-]+)/([\w-]+)/?$ $1.php?id=$2 [L,QSA]

RewriteCond %DOCUMENT_ROOT/proj1/$1.php -f
RewriteRule ^([^.]+?)/?$ $1.php [L]

【讨论】:

你确定这行得通吗?因为它不适合我 您尝试测试的 URL 是什么,遇到了什么错误? website.com/post/title-130 500 内部服务器错误。内部错误或配置错误,无法完成您的请求。 完全相同的规则适用于我的 Apache 服务器。您还有其他未在问题中显示的规则吗?另外我建议检查 Apache error.log 是否有 500 错误

以上是关于php URL - 用斜杠替换问号和参数的主要内容,如果未能解决你的问题,请参考以下文章

PHP中如何将反斜杠()替换为正斜杠(/)

Url的参数转变成json

psycopg2 用 '\' 反斜杠替换 '%5C'

如何防止 apache 在 URL 路径中使用单斜杠减少双斜杠?

shell脚本如何把反斜杠替换成斜杠反斜杠,比如2014\/5\/10变成2014/5/10,急用谢谢!

htaccess重定向,替换/用?