这是我的文件.htaccess在本地机器和网络托管上,本地一切运行良好,但在网络托管我只能访问web / index.php,例如example.com/web/index.php
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /web/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
答案 0 :(得分:2)
您的 RewriteBase 不正确,您应该只放置目录,而不是文件名。此外,如果你的根项目是web项目,你的重写基础应该只是/并且在重写规则中你应该告诉apache重定向你的所有请求。所以,你应该使用类似的东西:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ /web/index.php [QSA,L]
</IfModule>
但请记住,只有您的网络文件夹必须是可公开访问的,而不是整个项目。如果可以,您应该更改(否则您应该在根项目中放置.htaccess文件,在Web文件夹中放置另一个文件,但这超出了您的问题的范围)。