Htaccess会以某种方式自动删除网址末尾的所有尾部斜杠,只保留一个斜杠。
例如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]
答案 0 :(得分:3)
Apache会自动将多个斜杠删除为RewriteRule
模式中的单个斜杠。
如果要捕获多个斜杠,请使用RewriteCond
代替:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/(.*)$
RewriteRule ^ index.php?url=%1 [QSA,L]