我有一个用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]
答案 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。