为多个参数和页面编辑 .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的主要内容,如果未能解决你的问题,请参考以下文章