我需要从Laravel中生成的URL中删除index.php
或public/index.php
;通常路径是localhost/public/index.php/someWordForRoute
,它应该类似于localhost/someWordForRoute.
.htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes.
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php[L]
app/config/app.php
'url' => 'http://localhost',
我如何才能改变这一点?
发布于 2014-11-29 14:27:42
选项1:使用.htaccess
如果它还不存在,请在Laravel根目录中创建一个.htaccess文件。如果您的Laravel根目录不存在,请创建一个.htaccess
文件。(通常位于您的public_html
文件夹下)
编辑.htaccess文件,使其包含以下代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
现在,您应该能够在没有"/public/index.php/“部分的情况下访问该网站。
选项2:将'/public‘目录中的内容移动到根目录
在根目录中创建一个新文件夹,并移动除公用文件夹之外的所有文件和文件夹。你可以叫它任何你想要的名字。我将使用"laravel_code“。
接下来,将所有内容从public目录移到根文件夹中。它应该会产生类似下面这样的结果:
之后,我们要做的就是编辑laravel_code/bootstrap/paths.php
文件和index.php
文件中的位置。
在laravel_code/bootstrap/paths.php
中找到以下代码行:
'app' => __DIR__.'/../app',
'public' => __DIR__.'/../public',
并将它们更改为:
'app' => __DIR__.'/../app',
'public' => __DIR__.'/../../',
在index.php
中,找到以下行:
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/start.php';
并将它们更改为:
require __DIR__.'/laravel_code/bootstrap/autoload.php';
$app = require_once __DIR__.'/laravel_code/bootstrap/start.php';
发布于 2014-10-25 18:46:11
我在Laravel 4.2上尝试过
将Laravel根文件夹中的server.php
重命名为index.php
,并将.htaccess
文件从/public
目录复制到Laravel根文件夹。
我希望它能起作用
发布于 2016-01-20 00:50:20
请不要与下面我正在使用的其他选项混淆,它对您也很有用。将下面的htacces放入你的根目录中。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
转到您的公共目录并放置另一个htaccess文件,其中包含下面的代码片段
<IfModule mod_rewrite.c>
RewriteEngine On
# Removes index.php from ExpressionEngine URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>
它在工作..。!!!
Laravel使用下面的.htaccess
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
https://stackoverflow.com/questions/23837933
复制相似问题