我在apache centos服务器上有一个laravel 5.4。
文件夹结构如下: / var / www / html< - 公用文件夹 / var / www / project< - laravel项目文件夹 / var / www / html包含“public的laravel文件夹”内容,如css / js /和index.php等。
index.php包含对项目主文件夹的引用。 该项目有效,但只需使用ip:
myip/index.php/login
而不是
myip/login
正如我所愿 我尝试了很多方法来删除它,但没有运气,这是我在/ var / www / html中的.htaccess文件:
<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]
RewriteRule ^(.*)$ index.php/$1 [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
答案 0 :(得分:1)
您需要继续进行laravel文档部署/ apache,然后您将看到需要将重写器规则放入apache配置中的重写器规则。一切都会起作用
答案 1 :(得分:0)
您应该更改服务器配置以从Laravel公用文件夹中提供文件,而不是更改.htaccess
文件。
在编辑配置文件之前,为了安全起见,请复制默认配置文件以进行备份:cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.original
编辑文件/etc/httpd/conf/httpd.conf
,如下所示:
更改此行:
DocumentRoot "/var/www/html"
到
DocumentRoot "/var/www/project/public"
添加以下行以允许从Laravel公用文件夹中提供服务文件:
<Directory "/var/www/project/public">
AllowOverride All
Require all granted
</Directory>
运行sudo apachectl configtest
以确保您没有犯任何错误。你应该得到Syntax OK
。
重新启动Apache服务器以应用新配置。 sudo systemctl restart httpd
最后,将.htaccess
文件恢复为此link的laravel附带的默认版本。
创建虚拟主机而不是更改默认配置会更好。但是,如果您只在服务器上的网站上,这将是正常的。
答案 2 :(得分:0)
对于使用laravel 7.x的用户:确保在具有以下内容的项目的公共文件夹和根文件夹中都具有.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
顺便说一句,不要忘记在/etc/httpd/conf/httpd.conf中(在CentOS上)将AllowOverride设置为All:
<Directory "/var/www/path/to/my/app/public">
Options FollowSymLinks
AllowOverride All
</Directory>
祝你好运。