为多个参数和页面编辑 .htaccess

Posted

技术标签:

【中文标题】为多个参数和页面编辑 .htaccess【英文标题】:Editing .htaccess for multiple parameters and pages 【发布时间】:2021-09-19 07:41:34 【问题描述】:

我很难理解如何编辑我的 .htaccess 文件。

目前我有以下网址example.com/fixture.php?country=UK&cup=prem&year=1998&id=123

我想实现example.com/UK/prem/1998/123

URL 中的每个参数都会有一个页面,例如example.com/UK/prem/ 将有关于联赛的信息,与国家参数相同的其他杯赛也会在页面上显示信息。

目前这里是我的 .htaccess 文件

RewriteEngine On

RewriteRule ^fixture\.php$ - [L]

RewriteRule ^([^/]+)/?$ /fixture.php?id=$1 [L,QSA]

RewriteRule ^([a-z]2)/([^/]+)/?$ /fixture.php?country=$1&cup=$2 [L,QSA]

RewriteRule ^([^/]+)/([0-9]+)/?$ /fixture.php?country=$1&cup=$2year=$3&id=$4 [L,QSA]  

目前我只获得 404 状态。我已经搜索了堆栈溢出并修改了上面的代码,这是我认为我遇到问题的地方......

【问题讨论】:

【参考方案1】:

对于您显示的示例,请尝试以下在 htaccess 文件中设置的规则。请确保您的 htaccess 文件存在于根文件夹/目录中。

还要确保在测试 URL 之前清除浏览器缓存。

RewriteEngine On
##Blocking direct access to fixture.php here, added NC flag here.
RewriteRule ^fixture\.php$ - [NC,L]

##Rules for handling 4 parameters in uri.
RewriteRule ^([^/]*)/([^/]*)/(\d4)/\d3/?$ /fixture.php?country=$1&cup=$2year=$3&id=$4 [L,QSA]  

##Rules for handling 2 parameters in uri.    
RewriteRule ^([a-zA-Z]2)/([^/]+)/?$ /fixture.php?country=$1&cup=$2 [L,QSA]

##Rules for handling 1 parameter in uri.
RewriteRule ^([^/]*)/?$ /fixture.php?id=$1 [L,QSA]

【讨论】:

如果您的网址始终以英国作为第一部分,那么您也可以在上述规则中将第二条规则更改为 RewriteRule ^(UK)/([^/]*)/(\d4)/\d3/?$ /fixture.php?country=$1&cup=$2year=$3&id=$4 [L,QSA]

以上是关于为多个参数和页面编辑 .htaccess的主要内容,如果未能解决你的问题,请参考以下文章

AngularJs通过路由传参解决多个页面资源浪费问题

如何将kibana插入自己的页面

php中如何使用KindEditor编辑器

单页面使用多个编辑器

TypeScript系列教程04编译参数

TypeScript系列教程04编译参数