【问题标题】:Rewrite urls php/mysql page with htaccess apache用 htaccess apache 重写 urls php/mysql 页面
【发布时间】:2021-12-30 18:27:29
【问题描述】:

我有一个搜索表单来搜索某个城市的医疗机构。 当我显示结果时,我有这个 URL,例如: search.php?city=mycity&speciality=cardiology

我想像这样重写这个 URL:health-institution-cardiology-mycity

我设置了这样的.htaccess 规则:

RewriteEngine on
RewriteRule health-entity-([a-zA-Z\-]+)-([a-zA-Z\-]+) search.php?city=$2&speciality=$1

它不起作用,但是,我将此规则应用于另一种类型的 URL,它起作用了

代码有问题吗? 我需要添加一些东西吗?

【问题讨论】:

  • 您在规则中写了 health-entity,但在示例 URL 中写了 health-institution
  • 感谢 Joffrey,这是我这边的一个错误,在这两种情况下都是健康机构,问题仍然存在

标签: php apache .htaccess


【解决方案1】:

这将起作用:

RewriteEngine on
RewriteRule ^health-institution-([a-z]+)-([a-z]+)/?$ search.php?city=$2&speciality=$1 [NC,L]

注意:末尾的 NC(无大小写)使 rurl 不区分大小写。

【讨论】:

  • 谢谢@josé,它有效:) 我还有一个问题:当我创建链接时:例如:health-institution-cardiology-mycity,url 重写有效,它重定向到正确的内容,但是当我通过搜索表单进行搜索时,它会显示未重写的 url search.php?city=mycity&speciality=cardiology,我该如何解决这个问题以便获得重写的 url?
  • 我猜你有一个带有 method="get" 和 action="search.php" 的 HTML 表单,所以它像往常一样工作:通过 URL 发送参数。您需要阻止您的表单像往常一样工作,而不是被发送,而是使用您想要的格式重定向到友好的 URL。您可以制作一个将在表单提交或按钮单击时调用的 Javascript 函数。在该函数中,您可以根据需要构建 URL,从输入中获取值,然后重定向(更改位置)到该 URL。不要忘记在提交表单上返回 false。而且,嘿,如果可行,您可以投票支持我的回答并接受它;)
  • 我的意思是,在 .htaccess 中没什么可做的,您只需要在网页中构建友好的 URL。
  • 谢谢 José,你的解释很清楚,我会尝试实现这个解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-22
  • 2013-01-17
  • 2023-04-01
相关资源
最近更新 更多