无法使用.htaccess隐藏.php扩展名

时间:2012-01-28 12:20:39

标签: .htaccess mod-rewrite url-rewriting

我在使用.htaccess时遇到了麻烦。 这是我的.htaccess文件的内容

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

我打开了一个文本文件,粘贴这些行并将其保存为.htaccess 在我右键单击.htaccess文件并将其更改为“用记事本打开”之前,它显示.htaccess。我想这不应该有所作为,但现在它显示一个空白名称。

主要的问题是当我通过wamp在浏览器上打开我的localhost时,我保存.htaccess文件的文件夹是不可见的,或者我访问它时显示此内部服务器错误。现在,如果我删除来自那里的.htaccess文件,它显示在localhost目录中,当我尝试打开它时没有显示错误。

1 个答案:

答案 0 :(得分:1)

如果您收到500内部服务器错误,则正在读取.htaccess文件。从我看到的情况来看,您可能在!

之前缺少空格
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  #-----------------------------^^
  RewriteCond %{REQUEST_FILENAME} !-f
  #-----------------------------^^
  RewriteRule ^([^.]+)\.php$ $1 [L]

但是如果您希望用户不要看到.php扩展名,那么RewriteRule就会倒退。第一部分不应包含.php:

  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f    
  # The input URL has no PHP, but internally is served as .php 
  RewriteRule ^([^.]+)$ $1.php [L]