htaccess显示类别,子类别和URL中的帖子

时间:2019-05-03 11:34:55

标签: php .htaccess web

我目前正在构建一个简单的网站,但是却在htaccess中苦苦挣扎。

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

然后,我希望从那时起拥有子类别,例如服务的ppc,与团队见面,以及关于博客的精选博客文章。

当您单击诸如ppc中的帖子之类的链接时,您将获得以下URL结构:

网站名称/类别名称/子类别名称/帖子名称

sitename / services / 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之前插入动态网址

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

因此可以引用服务等。

2)查看帖子时,将子类别名称保留在url中,因为该帖子指向站点名称/类别名称/帖子名称

任何帮助将不胜感激。我希望这篇帖子很清楚,但如果不是这样,请告诉我,以便我可以改善。

1 个答案:

答案 0 :(得分:0)

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

似乎不允许(.*)/(.*)作为FIRST规则。如果要将 services / 1 重写为 services.php?id = 1 ,并将 catpost / 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。