如何禁用htaccess 404重定向?

时间:2014-10-09 10:01:16

标签: php apache .htaccess mod-rewrite

我有一个用PHP构建的网站,我使用HTACCESS文件来隐藏用户的.PHP扩展名,现在我试图在www.sitename.com/blog中建立一个博客,我创建了该文件夹,在那里上传文件。问题是,当我尝试访问/博客时,它将我重定向到404.无论如何要解决这个问题吗?

我的HTACCESS内容是

<IfModule mod_deflate.c>
    #The following line is enough for .js and .css
    AddOutputFilter DEFLATE js css

    #The following line also enables compression by file content type, for the following list of Content-Type:s
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml

    #The following lines are to avoid bugs with some browsers
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html 
</IfModule>

<IfModule mod_headers.c>
Header set Connection keep-alive
</IfModule>

ErrorDocument 404 /404.php

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

RewriteCond %{HTTP_HOST} ^www\.vartag\.com$ [NC]
RewriteRule (.*) http://vartag.com/$1 [R=301,L]

3 个答案:

答案 0 :(得分:0)

您的重写条件仅检查文件:

RewriteCond %{REQUEST_FILENAME} !-f

&#34;博客&#34;是一个目录,所以这不会匹配,apache将尝试打开&#34; blog.php&#34;,这是不存在的。

将此行更改为:

RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d

这也将检查目录。

答案 1 :(得分:0)

在请求URI中添加.php之前,您应检查.php文件是否存在:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(vartag\.com)$ [NC]
RewriteRule (.*) http://%1/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]

答案 2 :(得分:-1)

DirectoryIndex 404.php 它应该工作。 要么: DirectoryIndex 404.php index.php3 messagebrd.pl index.html index.htm 第二个代码更好。 如果404.php不起作用或者没有删除,则重定向到index.php3。