我看了很多例子并尝试了很多解决方案但没有成功! 我试图用apache将我的项目放到Ubuntu服务器上。
当我做的时候一切正常:
"/MYEXAMPLE/public/index.php/dashboard"
但我想:
"/MYEXAMPLE/public/dashboard"
还有问题!
“在此服务器上找不到请求的URL / MYEXAMPLE / public / dashboard。”
我的 apache服务器有de mod_rewrite。
我的项目文件夹是:
- MYEXAMPLE
--------- server.php
--------- public
----------------.htaccess.php
----------------.index.php
---------------- views
我的.htaccess.php:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
的index.php:
<?php //
require __DIR__ . '/../bootstrap/autoload.php';
$app = require_once __DIR__ . '/../bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
$response->send();
$kernel->terminate($request, $response);
我不想从公共文件夹中删除我的观点!当我使用wamp服务器时,一切正常,我不需要在URL上使用index.php。现在我正在尝试使用Ubuntu服务器,但URL不起作用,因为我需要index.php
其他例子:如果我访问
/MYEXAMPLE/public/
或
/MYEXAMPLE/public/index.php
按照我的要求进入主页。当我试图改变到其他页面时他的问题!
解决问题的任何消息?为什么一切都运行wamp并且当我尝试使用Ubuntu服务器时,我需要URL上的index.php?
提前致谢
答案 0 :(得分:3)
您需要point web server to public
directory并使用普通网址,例如/public/index.php/dashboard
而不是DocumentRoot "/path_to_laravel_project/public"
<Directory "/path_to_laravel_project/public">
。
<VirtualHost some.app:80>
DocumentRoot "/path_to_laravel_project/public"
ServerName some.app
ServerAlias some.app
<Directory "/path_to_laravel_project/public">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
此外,您可以使用此working Apache virtual host configuration for Laravel:
cxView.ApplyBestFit();
答案 1 :(得分:1)
有两个解决方案。 1.将您的.htaccess编辑为
DirectoryIndex index.php
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^index\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteRule .? %{ENV:BASE}/index.php [L]
2.dont编辑您的代码,仅在cmd中运行
php artisan serve
我为您提供了第二个解决方案