0

这是我想要实现的目标

www.example.com/category
www.example.com/category/subcategory
www.example.com/category/subcategory/product
www.example.com/static-page (like /about-us, /contact, /our-services)

(类别、子类别、产品、静态页面等是动态文本,数据库中有一个永久链接 foreach 事物)

如果您看到以上所有请求,您会注意到它们就像每次单击链接时将目录结构扩展一个步骤,例如,首先是类别,然后当我单击子类别时,我被发送到类别/子类别/和最后到产品页面

任何人都可以帮助我如何实现这一切,我已经尝试了很多来实现这一点,但还是徒劳无功。目前我正在使用这个 .htaccess

RewriteRule c/(.*)/(.*)/ cat-details.php?permalink=$1&subcat=$2
RewriteRule c/(.*)/(.*) cat-details.php?permalink=$1&subcat=$2

RewriteRule news/(.*)/(.*)/ news-detail.php?news-id=$1&permalink=$2
RewriteRule news/(.*)/(.*) news-detail.php?news-id=$1&permalink=$2

RewriteRule d/(.*)/(.*)/(.*)/(.*)/ download-detail.php?download-id=$1category=$2&subcategory=$3&permalink=$4
RewriteRule d/(.*)/(.*)/(.*)/(.*) download-detail.php?download-id=$1category=$2&subcategory=$3&permalink=$4 

正如你所看到的,我必须为每个链接添加 c/、news/、d/ 等,我试图摆脱这个并希望使链接在 c/、news/、d/ 等过程中变得非常漂亮

4

2 回答 2

0

我自己找到了一种方法,如果它可以帮助像我一样遇到麻烦的其他人,请发布它:p

    RewriteRule ^([^/]*)\/$ /romuniverse/cat.php?permalink=$1 [L]
    RewriteRule ^([^/]*)/([^/]*)\/$ /romuniverse/sub-cat.php?permalink=$1&subcat=$2 [L]
    RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)\.rar$ /romuniverse/download-detail.php?download-id=$1&category=$2&subcategory=$3&permalink=$4 [L]
于 2013-08-09T23:33:37.333 回答
0

关于您将能够在 Apache 中执行此操作的唯一方法是提供有关哪些 URL 映射到哪些脚本的信息。Apache 允许您通过RewriteMap指令执行此操作,但这不适用于 .htaccess 文件。没有它,也没有news/or c/,Apache 没有足够的信息来正确路由 URL。

您可以做的只是将每个不引用现有文件的 URL 重写为知道要运行哪些脚本作为响应的脚本。他们称之为“路由器”或“前端控制器”脚本。像这样的东西:

RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule (.*)   router.php?path=$1  [QSA]

在脚本中,您检查$_GET['path']、决定哪个脚本应该处理请求,并加载/包含/要求它。

于 2013-08-09T22:12:03.577 回答