您的位置:首页 > 运维架构 > Apache

apache rewrite 重写后出现 出现404 not found及You don't have permission to access 以及No input file specified

2017-03-10 20:20 447 查看
本文实例讲述了

【解决一】设置apache伪静态出现404 not found及You don't have permission to access / on this server解决方法。

【解决二】APACHE支持.htaccess以及 No input file specified解决方案

-----------------------【404 not found及You don't have permission to access / on this server解决方法】----------

分享给大家供大家参考。具体如下:

出现404 not found 时:

确保LoadModule rewrite_module modules/mod_rewrite.so开启

然后

复制代码代码如下:

<Directory />

    Options FollowSymLinks

    AllowOverride none  #此处把none 改成All

    Order allow,deny

    deny from all

</Directory>

 
出现:You don't have permission to access / on this server

复制代码代码如下:

<Directory />

    Options FollowSymLinks

    AllowOverride none  #此处把none 改成All

    Order allow,deny

    deny from all  #此处把deny改成Allow

</Directory>

 
确保设置了默认首页:

复制代码代码如下:

<IfModule dir_module>

DirectoryIndex index.html index.htm index.php

</IfModule>

有时候在WampServer上设置Apache伪静态还是会出现

You don't have permission to access / on this server

的提示

这时候进一步修改:

复制代码代码如下:

<Directory />

    Options FollowSymLinks #此处将FollowSymLinks改为All

    AllowOverride All

    Order allow,deny

    deny from Allow

</Directory>

将Options FollowSymLinks改为:Options All

问题即可解决。

-----------------------【APACHE支持.htaccess以及 No input file specified解决方案】----------

在你的Apache安装文件夹conf里找到httpd.conf文件

搜索LoadModule rewrite_module modules/mod_rewrite.so 如果前面有注释符号#,请去掉。

搜索Options FollowSymLinks,然后将它下面的AllowOverride None 修改为AllowOverride All;

【1】

没想到遇见了 No input file specified   因为项目用了URL route ,估摸着可能是rewrite的问题。

记录一下解决方案。

1.检查doc_root 是否设置此值

2.检查.hta文件 , 很多框架都是index.PHP当入口文件。

默认的

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

规则在apache fastcgi模式下会导致No input file specified.

修改成

RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]

就OK,地址正常重写。

【2】

我们都知道,使用伪静态相对来说,对搜索引擎比较友好,而我在Dreamhost的空间上启用REWRITE的伪静态功能的时候,首页可以访问,而访问内页的时候,就提示:“No input file specified.”。

百度搜索了一下,发现还有其它空间商也有此问题,原因在于空间所使用的PHP是fast_cgi模式,而在某些情况下, 不能正确识别path_info所造成的错误,就是Wordpress也有一样的问题,还好找到了解决方案!

我们首先来看一下Wordpress及Typecho等程序默认的.htaccess里面的规则:

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ /index.php/$1 [L]

而提示是说:“No input file specified.”,也就是说没有得到有效的文件路径。在Google中找到了解决方案,就是修改一下伪静态规则,如下:

[plain] view
plain copy

 





RewriteEngine On  

RewriteBase /  

RewriteCond %{REQUEST_FILENAME} !-f  

RewriteCond %{REQUEST_FILENAME} !-d  

RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]  

在正则结果“$1”前面多加了一个“?”号,问题也就随之解决了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐