Php 如何在htaccess中将html url重写为目录

Php 如何在htaccess中将html url重写为目录,php,html,.htaccess,mod-rewrite,Php,Html,.htaccess,Mod Rewrite,我想将我的所有类别URL重写为目录,而不是长html页面。我该怎么做?(如果您需要进一步了解目录结构以了解其当前的工作方式,请访问homewetbar.com网站。) 例如: 一级分类: www.site.com/great-gift-ideas-c-35.html 我想显示为: www.site.com/great-gift-ideas-c-35 二级分类: www.site.com/great-gift-ideas-gives-recipient-c-35_85.html 我想显示为: ww

我想将我的所有类别URL重写为目录,而不是长html页面。我该怎么做?(如果您需要进一步了解目录结构以了解其当前的工作方式,请访问homewetbar.com网站。)

例如:

一级分类:

www.site.com/great-gift-ideas-c-35.html

我想显示为: www.site.com/great-gift-ideas-c-35

二级分类:

www.site.com/great-gift-ideas-gives-recipient-c-35_85.html

我想显示为: www.site.com/great-gift-ideas/gives-recipient-c-3585

三级分类:

www.site.com/gives-recipient/groommens-gives-c-35_85_43.html

我想显示为: www.site.com/gives-recipient/groommens-gives-c-35_85_43

或:
www.site.com/great-gift-ideas/gifts-recipient/groommens-gifts-c-35_85_43(以较容易的为准)

我认为mod_rewrite是您需要的,包括如何设置以及如何开始重写URL。它应该有足够的信息来说明你在寻找什么,对于更高级的东西,你会想知道更多关于正则表达式的信息,但是你的例子很简单

RewriteEngine on
RewriteRule ^great-gift-ideas-c-35.html$ great-gift-ideas-c-35

这应该适用于您的第一个示例,其余的只是替换掉相应的URL。

您需要重写站点中的所有
href
,以删除“.html”部分。然后,将其添加到.htaccess

RewriteEngine on
RewriteCond ${REQUEST_FILENAME} !-d
RewriteCond ${REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ $1.html [L]
这将使任何不带“.html”的URL都能正常工作,就像它有一样

只需查看此网站:它会生成您所需的所有内容

RewriteEngine On
RewriteRule ^([^/]*)$ /?example=$1 [L]

将示例更改为您需要的内容应该做到这一点

我们目前在htaccess中有一个重写,然后转到php,由php处理并创建url。这是htaccess RewriteRule^(.*)-c-(.*).html$index.php?cPath=$2&%{QUERY_STRING}中的一行。我理解您要说的是让php创建url,然后在htaccess中重写它。对吗?我们如何动态地重写它们而不是像上面的例子那样一次重写一个?是的,htaccess将重写url,但是php\u get变量的访问方式与重写之前相同。至于动态重写所有这些文件,您可以使用NuTTyX的答案,但也可以为.php文件添加重写规则。唯一的困难是重写_get变量,最终可能需要单独编写。我对它们知道的不多。这对一个接一个的重定向很有帮助,但是我需要动态地重写所有这些重定向,以用于当前和任何将来转到类别的URL。由url字符串中的-c-指定。如何动态地为所有类别URL执行此操作?