Laravel default.htaccess文件将无法工作

Laravel default.htaccess文件将无法工作,.htaccess,laravel,.htaccess,Laravel,我终于为Laravel安装了所有东西,但我的主页上出现了一个错误500 它看起来是我的.htaccess文件。如果我删除它,页面将正常工作。如果我把它放回去,另一个错误是500 <IfModule mod_rewrite.c> Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModul

我终于为Laravel安装了所有东西,但我的主页上出现了一个错误500

它看起来是我的.htaccess文件。如果我删除它,页面将正常工作。如果我把它放回去,另一个错误是500

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

选项-多视图
重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
如果我将倒数第二行更改为“RewriteRule^index.php[L]”(index.php之前没有空格),则错误500消失,但重写规则将不起作用

我的主机是1和1.com


有人能帮我吗?

在我看来,500内部错误即将出现,因为您没有在apache httpd.conf文件中设置虚拟主机

将这一行放在httpd.conf文件中

窗户

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName yourlaravel.com
    DocumentRoot "C:/wamp/www/laravel/public"
    <Directory "C:/wamp/www/laravel/public">
    </Directory>
</VirtualHost>

<VirtualHost *:80>
     ServerName localhost
     DocumentRoot "C:/wamp/www"
     <Directory "C:/wamp/www">
     </Directory>
</VirtualHost>
对于linux,打开\etc\hosts并将其放在这一行

 yourserverip   yourlaravel.com
 yourserverip   yourlaravel.com
您可以参考此链接了解更多信息:

我希望这能有所帮助。

更改了此行:

    RewriteRule ^ index.php [L]
为此:

    RewriteRule ^ /index.php [L]

现在它起作用了。我不仅没有收到500错误,而且URL似乎也能正常工作。

我也遇到了类似的问题,错误在一夜之间突然发生

我在google和Stackoverflow上搜索了很多次,但是我找不到任何解决方案来解决这个问题,而且我一直收到500个内部服务器错误

我在共享主机上,甚至重命名.htaccess文件都不起作用

在.htaccess的按钮上,我把

php_flag opcache.enable 0

就在结尾之前
。这为我解决了这个问题。

我也遇到了这个问题,并通过注释.htaccess文件中的选项行解决了它

使用Apache2.4.x

<IfModule mod_negotiation.c>
        #Options -MultiViews
</IfModule>

#选项-多视图
它可能与站点配置冲突。 因为它不能有不同运算符的多个条件

我还找不到链接。 但我以前在什么地方读过

编辑:找到

将带有+或-的选项与不带+或-的选项混合使用是无效的语法,在服务器启动期间,将通过带中止的语法检查拒绝这些选项


只要确保您的.htaccess和apache配置没有相互冲突。

在默认配置不起作用的大多数项目中,它对我是有效的

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]

</IfModule>
DirectoryIndex.php
选项-多视图
重新启动发动机
RewriteCond%{REQUEST_URI}:$1^(/.+)/(.*):\2$
重写规则^(.*)-[E=基:%1]
RewriteCond%{ENV:REDIRECT_STATUS}^$
重写规则^index\.php(/(.*)|$)%{ENV:BASE}/$2[R=301,L]
RewriteCond%{REQUEST_FILENAME}-f
重写规则[L]
重写规则.?%{ENV:BASE}/index.php[L]

我在一个共享托管环境中,因此无法更改https.conf文件。有人能解释一下为什么会发生这种情况以及此修复程序为什么有效吗?这是我希望可以多次向上投票的情况之一。感谢您的帮助,因为1和1支持毫无价值。如果您的文件夹中有文件夹,则这不起作用。这会重定向到,例如,
localhost/index.php
此修复程序为什么有效?谢谢!这并不能真正回答问题。如果您有不同的问题,可以单击以提问。一旦你有足够的时间,你也可以吸引更多的注意力哦,如果我的回答没有真正回答OP的问题,那就很抱歉了。我的意思是,我试着对选项行进行注释。然后错误就解决了。
<IfModule mod_negotiation.c>
        #Options -MultiViews
</IfModule>
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]

</IfModule>