我目前正在构建一个简单的网站,但是却在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中,因为该帖子指向站点名称/类别名称/帖子名称
任何帮助将不胜感激。我希望这篇帖子很清楚,但如果不是这样,请告诉我,以便我可以改善。
答案 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。