php - 一个 6 种场景的 url 重写规则

标签 php regex apache url-rewriting

我有一个适用于我的索引页的重写规则

RewriteRule ^index$ index.php [L]
RewriteRule ^index/$ index.php [L]
RewriteRule ^index/page/(0?[1-9]|1[0-2])$ index.php?recordstart=$1 [L]
RewriteRule ^index/page/(0?[1-9]|1[0-2])/$ index.php?recordstart=$1 [L]

我有 6 个页面具有类似的场景。

例如。

RewriteRule ^graduate$ graduate.php [L]
RewriteRule ^graduate/$ graduate.php [L]
RewriteRule ^graduate/page/(0?[1-9]|1[0-2])$ graduate.php?recordstart=$1 [L]
RewriteRule ^graduate/page/(0?[1-9]|1[0-2])/$ graduate.php?recordstart=$1 [L]

我正在寻找可以匹配六个确切场景的重写,而不是将四行重复六次。

谢谢

最佳答案

类似于:

RewriteRule ^(scenario1|scenario2|scenario3)$ $1.php [L]
RewriteRule ^(scenario1|scenario2|scenario3)/$ $1.php [L]
RewriteRule ^(scenario1|scenario2|scenario3)/page/(0?[1-9]|1[0-2])$ $1.php?recordstart=$2 [L]
RewriteRule ^(scenario1|scenario2|scenario3)/page/(0?[1-9]|1[0-2])/$ $1.php?recordstart=$2 [L]

感觉很脏,但是如果你想排除除提到的那些之外的所有其他场景。

编辑:我也会在这里添加它,您可以通过在 / 之后检查 ? 来删除 2 行规则,它会匹配或不匹配尾随 /。解决方案将变为:

   RewriteRule ^(scenario1|scenario2|scenario3)/?$ $1.php [L]
   RewriteRule ^(scenario1|scenario2|scenario3)/page/(0?[1-9]|1[0-2])/?$ $1.php?recordstart=$2 [L]

关于php - 一个 6 种场景的 url 重写规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6277342/

相关文章:

php - S3 URL 中带双引号的文件名会导致参数无效

regex - RewriteRule 不适用于加号(+ 或 *)字符

php - ubuntu 20.04 apache2 - php 文件下载

apache - Flowplayer 从 apache 流式传输 mp4

java - netbeans 上的功能项目在 apache tomcat 中引发异常

javascript - 当我在 HTML 中调用它时,为什么我的 Javascript 函数不运行/工作?

php - 准备好的声明

php - 防止通过表单覆盖文件上传和MySQL记录?

c# - HTML 标签替换多行

regex - 从 MSBuild 中的字符串中提取数字