Apache htaccess重写斜杠后跟问号

时间:2015-10-30 12:14:05

标签: apache .htaccess mod-rewrite

我在Laravel Lumen项目上工作并发出一些奇怪的事情。我在一些路线上创建了一个安静的API。如果我直接从我的浏览器调用API,一切似乎都有效。但是,如果我使用调试接口的iPhone客户端应用程序,则会添加一个额外的斜杠。

API目前位于:

http://.../public/index.php/api/fever?api&items

每当使用iPhone应用程序或调试工具时,都会要求以下位置:

http://.../public/index.php/api/fever/?api&items

这导致找不到'页面。错误。是否可以使用apache htaccess重写规则将所有 api / fever /?重定向到 api / fever? ??

htaccess文件必须位于公共文件夹中,该文件夹位于主网站下的子文件夹下。

提前致谢

当前的htaccess

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

</IfModule>

1 个答案:

答案 0 :(得分:0)

您可以在网站根目录.htaccess:

的顶部尝试此重定向规则
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{THE_REQUEST} !.*/api/fever/ [NC]
    RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

    RewriteCond %{THE_REQUEST} \s/(.*api/fever/\S*)\s [NC]
    RewriteRule ^ /%1 [L,R=301,NC]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

</IfModule>