【发布时间】:2016-07-25 07:09:36
【问题描述】:
Htaccess 会以某种方式自动删除 url 末尾的所有尾随斜杠并只保留一个。
例如http://localhost/api/param1///变成http://localhost/api/param1/
你能告诉我为什么会发生这种情况以及如何摆脱这种情况吗? (.*) 应该匹配所有内容吗?但事实并非如此。就像我说的,如果我去http://localhost/api/param1/// $_GET['url'] 应该是param1/// 但它是param1/。
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
【问题讨论】:
-
-d&-f重写到目录和文件位置。param1/可以是目录,param1///不能是目录。 -
嗯,所以你是说这不可能?现在我正在使用 $_SERVER["REQUEST_URI"] 变量,它可以完成这项工作,但我想知道是否有更好的解决方案。
-
虽然您可以通过在
RewriteCond指令中使用REQUEST_URI变量在.htaccess 中解决此问题,但在PHP 中使用$_SERVER['REQUEST_URI']超全局(正如您所做的那样)可以说同样好(或更好) - 可能取决于您的情况。