如何使用.htaccess隐藏php扩展,并保持path_info超全局可访问


How to hide php extension using a .htaccess and still keep the path_info superglobal accessible

我想知道在使用.htaccess时,从url中隐藏php扩展的正确方法是什么。目前我有这样的.htaccess:

RewriteCond %{REQUEST_FILENAME}.php     -f
RewriteRule ^(.+'.php)$/(.+)$/(.+)$/$   /$1.php/$2/$3 [S]
RewriteCond %{REQUEST_FILENAME}     !-f
RewriteCond %{REQUEST_FILENAME}     !-d
RewriteCond %{REQUEST_FILENAME}.php     -f
RewriteRule ^(.+)$          /$1.php [L,QSA]

上面的第二条规则是因为当给出这样的url时,我必须保持PHP_INFO的可访问性:xxx/vision.hp/2013/Enero

在htdocs目录中,我有AllowOverridde选项,它的设置如下:

RewriteEngine On
Options +FollowSymlinks
RewriteBase /

但每当我尝试访问服务器文档根目录时,它都会给我一个内部服务器错误。也许有人能给我指明正确的方向,希望很快因为我很匆忙

Options MultiViews

将在没有mod_rewrite的情况下完成。使用"多视图"可以访问不带扩展名的文件。由于默认情况下,对于.php和其他脚本文件,AcceptPathInfo为On,因此这也会起作用:

/abc/articles/2013/Enero

将转到/abc/articles.php,为其提供/2013/Enero的PATH_INFO。