如果启用了mod_rewrite, 那么Options就一定要启用FollowSymLinks或者SymLinksifOwnerMatch, 否则会出现Fobidden页面禁止访问的错误。
于是把 Options 的选项加上 FollowSymLinks 就没问题了。
目录下,该文件通常已经配置好了重写规则。确保你的服务器启用了 mod_rewrite 模块,并且 .htaccess 文件是可读的。如果你使用的是 Apache 服务器,你可以通过修改 .htaccess 文件来隐藏 index.php。Laravel 安装时已经包含了一个 .htaccess 文件在 public 目录下,该文件通常已经配置好了重写规则。
确保你的服务器启用了 mod_rewrite 模块,
并且 .htaccess 文件是可读的。
默认情况下,Laravel 的 .htaccess 文件内容应该如下所示:
apache
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
确保你的 Apache 配置允许 .htaccess 文件生效,并且 AllowOverride 指令设置为 All 或至少包含 FileInfo。
Nginx 服务器
如果你使用的是 Nginx 服务器,你需要在 Nginx 的配置文件中添加重写规则来隐藏 index.php。这通常是在你的网站配置文件的 server 块中完成的。
以下是一个示例 Nginx 配置,用于隐藏 index.php:
nginx
server {
listen 80;
server_name example.com;
root /path/to/laravel/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 替换为你的 PHP-FPM 路径
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# 其他配置...
}
在上面的配置中,try_files 指令尝试按照指定的顺序提供文件。如果请求的 URI 对应一个实际存在的文件或目录,那么就直接提供该文件或目录。否则,请求会被转发到 index.php,并将原始的查询字符串附加到其后。
确保替换 /path/to/laravel/public 为你的 Laravel 项目 public 目录的实际路径,并根据你的 PHP-FPM 配置调整 fastcgi_pass 指令。
配置完成后,重新加载或重启 Nginx 以使更改生效。
未经允许不得转载:lxfamn » laravel 隐藏index.php