如何删除index.php来访问laravel中的控制器

时间:2017-07-17 03:47:16

标签: laravel url indexing controller http-status-code-404

当我打开控制器时,我无法删除url中的index.php。

sitename / works。

sitename / index.php wors。

sitename / about not working。

sitename / index.php / about works

.httaccess:

<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}]

Apache2虚拟主机:

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    Alias /comunion /var/www/html/boletinesUC/public

    <Directory /var/www/html>

        AllowOverride All

   </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

为什么呢? 谢谢!

2 个答案:

答案 0 :(得分:0)

在Laravel根目录中创建一个.htaccess文件(如果它尚不存在)

添加以下代码

<IfModule mod_rewrite.c>
   RewriteEngine On 
   RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

现在您应该可以在没有&#34; /public/index.php /&#34;的情况下访问该网站;一部分。

答案 1 :(得分:0)

看起来您的网站位于html文件夹中的子文件夹中。您应该将DocumentRoot更改为指向Laravel项目的公共文件夹。

将Apache2虚拟主机更改为以下

<VirtualHost *:80>
    DocumentRoot /var/www/html/project_name/public
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

还要确保apache2.conf中的Apache2配置具有以下配置

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

最后,不要忘记重新启动您的网络服务器

service apache2 restart