.htaccess用于删除public / index.php在root中运行良好,而不是在子目录中运行

时间:2015-01-27 17:51:17

标签: php regex .htaccess mod-rewrite rewrite

这是我的.htaccess,我在laravel中默认它可以帮助我阻止输入public/index.php

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>
    RewriteEngine On
    RewriteRule ^(.*)/$ /$1 [L,R=301]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

所以,如果我需要访问

localhost/public/index.php/home
localhost/public/index.php/login

我输入

就足够了
localhost/home
localhost/login

我想对少数目录例外,例如&#39; testproject&#39;和&#39; betaproject&#39;即,我将有一个常规的php或html目录,或者我将有另一个新的项目,它也会有相同的.htaccess。

如何修改.htaccess文件以使其成为可能。

这样,如果我想访问

localhost/testproject/public/index.php/home应该可以通过localhost/testproject/home

访问

1 个答案:

答案 0 :(得分:0)

在你的root .htaccess中有这个规则跳过2个目录:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(testproject|betaproject)/(\w+)/?$ $1/public/index.php/$2 [L,NC]

确保此规则位于RewriteEngine On行下面。