Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用.htaccess在现有站点上进行产品筛选_Php_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Php 使用.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> 重新启动发

在自定义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>

重新启动发动机
重写基/
重写规则^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
,但请检查日志以了解它真正尝试访问的内容。此外,重写基和包装可能是多余的。