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 - 用斜杠替换问号和参数的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 apache 在 URL 路径中使用单斜杠减少双斜杠?