分享

一个斜杆在apache配置中的问题

 guitarhua 2016-04-18
本地机器环境:  

  <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>



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多