【问题标题】:Editing .htaccess for multiple parameters and pages为多个参数和页面编辑 .htaccess
【发布时间】: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 状态。我已经搜索了堆栈溢出并修改了上面的代码,这是我认为我遇到问题的地方......

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting friendly-url


    【解决方案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 ^([^/]*)/([^/]*)/(\d{4})/\d{3}/?$ /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)/([^/]*)/(\d{4})/\d{3}/?$ /fixture.php?country=$1&cup=$2year=$3&id=$4 [L,QSA]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多