【问题标题】:Rewrite Dynamic URL In PHP Using .htaccess使用 .htaccess 在 PHP 中重写动态 URL
【发布时间】:2018-08-29 09:54:41
【问题描述】:

我想按照以下模式重写 url

我现在的网址是:

xyz.com/news_details.php?id=120&title=hello-world

我希望 url 原样: xyz.com/hello-world

我还想在此页面上获取 id 的值,例如: $id = $_REQUEST['id'];

请帮忙

我确实使用了以下代码:

RewriteCond %{THE_REQUEST} /news_details.php\?id=([^&\s]) [NC]  
RewriteRule ^ /%2\.html? [NC,R,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^-])\.html$ /news_details.php?id=$2 [QSA,L,NC]

【问题讨论】:

  • 这不是永远循环并导致 508 错误吗?
  • @CD001: 可以做什么
  • 不,您不能向客户端显示 xyz.com/hello-world URL 并且仍然从请求中获取 id 参数。您必须查询数据库以获取 id,否则您的 URL 为 xyz.com/120/hello-world
  • 那么您要使用的 URL 是 xyz.com/hello-world,它在任何地方都不包含 id=120。许多框架/应用程序所做的是将请求 URL 和 real URL 存储在数据库中,并使用路由脚本来获取所需的资源。

标签: php apache .htaccess url-rewriting url-routing


【解决方案1】:

你可以这样做:

RewriteEngine On
RewriteRule ^/(.*)/(.*)$ /news_details.php?title=$1&id=$2

实现http://example.net/hello-world/120之类的链接。

^/(.*)/(.*)$ 部分告诉 apache 它将遵循的模式。第二部分 (news_details.php?title=$1&id=$2) 为 apache 提供了应用该模式的真实链接。

您不能对用户完全隐藏参数,因为您需要一种方法来获取您想要作为 id 参数的 id。所以这是唯一可行的方法。

您可以阅读更多关于它的信息here

【讨论】:

  • 你能详细解释一下如何使用这个
猜你喜欢
  • 1970-01-01
  • 2014-05-08
  • 2014-07-09
  • 2018-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多