我正在尝试创建一个 RewriteRule,但它不可靠,我无法弄清楚发生了什么。这是我的规则:
RewriteRule ^docs/(......)/$ index.php?docid=$1 [L]
问题在于前导斜杠,我听说这是一件麻烦事。发生的情况如下;
如果在 URL 末尾包含斜杠,则一切都会按预期进行。但是,如果您不在末尾包含斜杠,则 URL 会变成这样:
http://www.mywebsite.com/docs/abcdef/?docid=abcdef
它在 URL 后面包含 GET 数据。有趣的是,网站仍然按预期运行。这是怎么发生的?根据我制作的重写规则,URL 内部应该如下所示:
http://www.mywebsite.com/index.php?docid=?docid=abcdef
但经过进一步测试,似乎添加的获取数据被完全忽略了。说真的,我试过在问号后写任何东西。没有任何效果影响网站。
如果有人能向我解释发生了什么,我将不胜感激。此外,如果有人能向我展示如何更改重写规则以使重写工作,我将不胜感激。
技术细节:
- Debian 上的 apache-2.2
- 在 apache 配置文件中写入的 rewriterule。
- 没有省略其他重写规则。
答案1
只需将尾随设置/
为可选即可?
:
RewriteRule ^docs/(......)/?$ index.php?docid=$1 [L]