htaccess的这一部分有什么问题?


What's wrong with this part of htaccess

对于我的一个客户,我正在建立一个网站。为此我使用了Laravel框架。现在我知道最好的做法是将公共目录设置为DocumentRoot,但问题是,我不能。我做了一些研究,发现你可以用。htaccess来处理这个小问题。laravel论坛上的代码片段如下:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^public
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

但是当我尝试这个时,我得到一个500内部服务器错误。我发现问题出在第四行的(.*)部分…但我就是看不出有什么问题。

有谁知道这段代码出了什么问题,为什么我得到了500个错误…

你就快成功了。REQUEST_URI包括斜杠/。所以你必须写

RewriteCond %{REQUEST_URI} !^/public

不要更改公共文件夹路径,只需复制通常的laravel树并使用以下代码/公共/。htaccess

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>