php在apache中的运行方式有:CGI模式、FastCGI模式、Apache模块模式,详细了解自行搜索。
1.默认的
3p2XmuAkzP5gM2wFeBIbeg==
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
规则在apache fastcgi模式下会导致No input file specified.
KrjbDBvxpSNyoQScNF6CbQ==
2.修改成
bi2afZpcsDHWAhGm24tZHw==
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
或者
RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]
可以正常重写。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^h5/(.*) /h5/index.html [QSA,PT,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(h5)
RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]
</IfModule>
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|eot|otf|svg|ttf|woff|woff2)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
这是由于你的服务器伪静态没有生效或错误导致的,如果你使用宝塔面板,请直接在宝塔面板后台
->网站
->伪静态
中选择ThinkPHP5
的伪静态规则即可。
这种情况一般在Apache下伪静态不工作的情况下出现,
首先确保已经启用Apache的伪静态,确保目录已经配置好权限,如下面的Directory配置
<VirtualHost *:80>
DocumentRoot "/Users/Karson/Project/fastadmin/public"
ServerName fa.com
ServerAlias fa.com *.fa.com
<Directory "/Users/Karson/Project/fastadmin">
AllowOverride All
Options Indexes FollowSymLinks
Require all granted
</Directory>
</VirtualHost>
其次伪静态规则在Apache fastcgi
模式下会导致No input file specified.
,未指定输入文件。
请修改public
目录下的.htaccess
文件
默认的
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
修改成
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]