首页 > 解决方案 > httpd url重写规则问题

问题描述

我正在尝试修复一个使用.htaccesshttpd 文件的旧项目。

.htaccess有两个重写路径的规则,如果路径中没有日期,它将转到索引,否则列出。问题是列表路径不起作用,它进入索引,如果我注释掉索引路径列表路径开始工作,取消注释它开始进入索引。

以下是规则 v1:

RewriteEngine On
RewriteRule ^m/([a-zA-Z0-9]+)/(\d{4}-\d{2}-\d{2})/? m/list.php?list_id=$1&date=$2 [QSA,L]
 
RewriteEngine On
RewriteRule ^m/([a-zA-Z0-9]+)/? m/index.php?list_id=$1 [QSA,L]

以下是规则 v2:

RewriteEngine On
RewriteRule ^m/([a-zA-Z0-9]+)/? m/index.php?list_id=$1 [QSA,L]

RewriteEngine On
RewriteRule ^m/([a-zA-Z0-9]+)/(\d{4}-\d{2}-\d{2})/? m/list.php?list_id=$1&date=$2 [QSA,L]
 

以下是两个测试网址:

http://www.example.com/m/blas3as应该去index.php(这适用于顶部的规则)

http://www.example.com/m/blas3as/2021-01-01 -> list.php(此链接不起作用index.php

如果我注释掉:

#RewriteEngine On
#RewriteRule ^m/([a-zA-Z0-9]+)/? m/index.php?list_id=$1 [QSA,L]

http://www.example.com/m/blas3as/2021-01-01 -> list.php(此链接开始工作)

不经意间,另一个链接停止了。

标签: regex.htaccessapache2.4

解决方案


推荐阅读