【问题标题】:php URL - replace question mark and parameter with slashphp URL - 用斜杠替换问号和参数
【发布时间】: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/

标签: php apache .htaccess url


【解决方案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 错误
猜你喜欢
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
  • 2015-03-26
  • 2013-03-02
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多