Php 使用.htaccess在现有站点上进行产品筛选
在自定义CMS构建中,我将以下内容用于.htaccess文件Php 使用.htaccess在现有站点上进行产品筛选,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,在自定义CMS构建中,我将以下内容用于.htaccess文件 <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> 重新启动发
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
重新启动发动机
重写基/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
当用户点击www.mysite.com时,脚本会根据数据库中页面的一个片段来确定要加载的页面。这是很好的工作,但我想进一步。现在我可以做www.mysite.com/products,它将为我提供产品页面的数据。我想做的是将产品过滤添加到URL。例如:
www.mysite.com/products/collection/summer collection
或
www.mysite.com/products/mens-navy-blue-blazer-19285
或
www.mysite.com/products/category/outer wear
我的产品创建模块已经生成了一个独特的产品slug,所以我只需要修改我的.htaccess就可以了。这里有一个枯燥的“一网打尽”重写规则块。在这种情况下(通常称为“前端控制器模式”),在路径部分上分派实际的
请求URI
。在.htaccess
中引入更多的定向匹配规则是没有意义的。好吧,现在我处理分派的“页面检查”文件是这样工作的:$request=strip_标记(trim($_SERVER['REDIRECT_URL'));$request=rtrim($request,“/”);//删除尾随斜杠
,这样我可能只需要在使用explode(“/”,$request)分解后对参数/单个片段进行进一步的计算代码>。我在那里的思想列车上吗?抱歉,我更新为.htaccess,所以这对我来说有点混乱。是的,类似的。稍后,您通常会希望使用regexp来实现这一点。仅仅分开并不总是足够的。查看各种路由框架/库。(尽管这常常是矫枉过正)谢谢。我会考虑为支票做一些正则表达式,尽管我在正则表达式方面比我更差。htaccess。然而,有一件事是,现在如果我访问www.mysite.com/products/trymously-anything,我会得到404。为了允许发送两个参数而不是一个参数,需要在htaccess文件中进行哪些更改?可能需要RewriteRule^.*$/index.php
,但请检查日志以了解它真正尝试访问的内容。此外,重写基和包装可能是多余的。