首页 > 解决方案 > 协助 mod_rewrite 规则返回 404

问题描述

我花了太长时间试图弄清楚我的简单 (?) mod_rewite 规则发生了什么,但无济于事,所以我来了。

我有一堆规则,所有规则都运行良好,但这条规则不会,因为我的一生都在工作,并且在我的本地机器和我的实时服务器上都抛出 404:

RewriteRule ^mywaiver/([0-9]+)\,([0-9]+)/ /waiver_public.php?bid=$1&cid=$2 [L,NC]

目标是拥有

https://example.com/123456,654321/

改写为

https://example.com/waiver_public.php?bid=123456&cid=654321

直接点击url(即重写后的版本)效果很好,只是不是'干净'的版本,它根本不会重写。

除了访问日志中的 404 之外,我的日志中什么也没有。

我错过了一些非常愚蠢的东西吗?在这一点上,另一双眼睛的任何帮助都会令人惊叹。

标签: apache.htaccessmod-rewriteurl-rewritingfriendly-url

解决方案


使用您显示的示例/尝试,您能否尝试以下操作。请确保在测试您的 URL 之前清除您的浏览器缓存。所有不存在的页面将由带有参数的 waiver.php 文件提供。

RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(\d+),(\d+)/?$ waiver.php?bid=$1&cid=$2 [QSA,L]

推荐阅读