删除php扩展但拒绝直接访问

时间:2010-11-08 00:37:23

标签: php apache .htaccess

我想用htaccess删除php扩展,但也拒绝所有直接访问php文件。所以如果你写www.site.com/test,你的ok和www.site.com/test.php你无法访问! THX

1 个答案:

答案 0 :(得分:1)

我知道这是一个老问题,但是我想做同样的事情,最后使用zerkms的答案,但修改后不会破坏索引,并且在查找文件时不会破坏循环不存在这是有效的代码,使用“error.php”作为我的错误页面而不是403.html。

RewriteEngine on

#specify the error page
ErrorDocument 404 /error.php?e=404
ErrorDocument 403 /error.php?e=403
ErrorDocument 401 /error.php?e=401

#prevent redirect loops
RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /error.php [L]

#redirect to .php files but prevent direct access
RewriteRule ^$ index.php [L,QSA]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)/$ $1/index.php [L,QSA]
RewriteCond %{THE_REQUEST} \.php
RewriteCond %{REQUEST_FILENAME} !error.php$
RewriteRule .* /error.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !\.php$
RewriteRule (.*) $1.php [L,QSA]