【问题标题】:htaccess show category, sub category and post in urlhtaccess 在 url 中显示类别、子类别和帖子
【发布时间】:2019-09-21 22:53:55
【问题描述】:

我目前正在构建一个简单的网站,但在使用 htaccess 时遇到了一些困难。

我希望我的链接(例如服务、关于、博客等)成为类别。

然后我想从那时起有子类别,例如用于服务的 ppc,与团队会面以了解关于和选择的博客文章。

当您点击链接(例如 ppc 中的帖子)时,您会看到以下 URL 结构:

站点名称/类别名称/子类别名称/职位名称

站点名称/服务/ppc/ppc-management

到目前为止,我已经能够让网址显示如下:

站点名称/类别名称/子类别名称

网站名称/类别名称/职位名称

上面的两个成功例子表明我可以让它同时显示类别名称和子类别名称。

或者我可以将类别名称和帖子名称放在一起。

所以我正在努力获取类别名称/子类别名称/帖子名称

我当前的 htaccess 文件如下所示:

RewriteEngine On
RewriteBase /

RewriteRule ^services/(.*)$ catpost.php?id=$1 [L]
RewriteRule ^a-(.*)-(.*)$ archives.php?month=$1&year=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^(.*)$ viewpost.php?id=$1 [QSA,L]

我正在努力解决这两个问题:

1) 在 catpost.php 之前有一个动态 url 插入

-您将在 htaccess 中看到我已经修复了 catpost 重写规则以提供服务。但是,有没有办法动态地进行更改?

这样可以引用服务,关于等。

2) 当您查看指向站点名称/类别名称/帖子名称的帖子时,将子类别名称保留在 url 中

非常感谢任何帮助。我希望这篇文章很清楚,但如果不是,请告诉我,以便我改进。

【问题讨论】:

  • 不太清楚。 “如果我有一个 services.php [...] 我想在斜线之前插入服务” - 你的意思是你希望你的重写器根据什么脚本文件动态创建/更新你上传? “正如你所看到的,当我使用 post-name 时,它​​会从 url 中删除子类别名称。” - 完全不知道你的意思是什么。
  • @04FS 感谢您的反馈。我试图在我的帖子中说得更清楚。我希望这会有所帮助。
  • 好吧,您当然可以再次将services 替换为(.*) 之类的东西……您只需要注意,以免意外创建匹配的规则超出预期。多个给定值之间的交替也是可能的,例如(services|about|foo)
  • @04FS 谢谢。如果我是正确的,我认为您提到的第二个选项在 Wordpress 中使用?非常感谢您对此的帮助
  • 不,Wordpress 使用的是 David 的建议——所有不是物理存在的文件或目录的东西都被重写到 index.php,而路由的所有其他方面都在 PHP 中处理。

标签: php .htaccess web


【解决方案1】:

好吧,如果我是你,我会尝试在 index.php 中处理所有这些,并通过 include() 引用其他页面。

似乎 (.*)/(.*) 不允许作为 FIRST 规则。如果您想将 services/1 重写为 services.php?id=1catpost/5 重写为 catpost.php?id =5,试试这个:

RewriteRule ^a-(.*)-(.*)$ archives.php?month=$1&year=$2 [L]
RewriteRule ^([^/]+)/([^/]*)$ $1.php?id=$2 [NC,L]
  • [^/] 代表除斜线以外的任何字符

为了一起完成你的第二个任务,我尝试了:

RewriteRule ^([^/]+)/[^/]+/([^/]*)$ $1.php?id=$2 [NC,L]

(看起来不漂亮。我的错。)

但它需要你在两个斜线之间放一些东西,比如 catpost/something/2,如果你把它留空,你似乎会得到 500。

【讨论】:

  • 好的,我在我的服务器上尝试了(.*)/.*/(.*),它可以工作
  • 谢谢你。我会试一试,看看我得到的结果。
猜你喜欢
  • 1970-01-01
  • 2016-04-11
  • 1970-01-01
  • 2013-01-24
  • 2016-08-13
  • 1970-01-01
  • 2012-10-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多