【发布时间】: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 中处理。