本地机器环境:
<IfModule rewrite_module>
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
服务器环境:
<IfModule rewrite_module>
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^/(.*)$ /index.php/$1 [QSA,PT,L]
</IfModule>
很奇怪的问题,就一个thinkphp的重写规则,上面那个在本地机器上行,下面那个在服务器上行,但是如果调换一下就两个都不行了,好奇怪的斜杆。
url是 域名/products,错误提示是File not found.找不到文件,但是 域名/index.php/products能正常访问,
先说说环境配置,都是apache+php,本地机器是php作为apache的模块运行,而服务器上是php-fpm,用的是fastCGI模式运行。可能差别就在这里,照例系统本身不应该有差别,都是ubuntu14.04,
更奇怪的是服务器上的那个重写规则必须写到虚拟主机目录中去才行。如果只是放在.网站根目录下的.htaccess中,有没斜杠都不行,如下所示
<VirtualHost *:80>
ServerName ····
ServerAdmin ····
DocumentRoot /var/www/···
<Directory /var/www/···>
AllowOverride All
# Options All
Options -Indexes +FollowSymLinks +ExecCGI
</Directory>
<IfModule rewrite_module>
RewriteEngine On
RewriteRule \.(js|ico|gif|jpg|JPG|png|PNG|css|pdf|swf)$ - [L]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^/(.*)$ /index.php/$1 [QSA,PT,L]
</IfModule>
<IfModule mod_fastcgi.c>
ScriptAlias /php-fpm/ "/usr/local/php5.3/sbin/"
FastCgiExternalServer /usr/local/php5.3/sbin/php-fpm -host 127.0.0.1:9000
AddHandler php-fastcgi .php
Action php-fastcgi /php-fpm/php-fpm
</IfModule>
</VirtualHost>
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。