.htaccess强制删除地址中的文件扩展名

时间:2013-07-03 11:05:21

标签: .htaccess url-rewriting friendly-url

我需要一个.htaccess文件,它会执行以下操作:

  1. 当用户输入www.site.com/some_folder/test时,它会保持地址不变并打开相应的页面(test.php)
  2. 当用户输入www.site.com/some_folder/test.php时,它会将.php扩展名移除到www.site.com/some_folder/test,并会打开相应的页面(test.php)
  3. 我现在拥有的是:

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^(.*)$ $1.php
    

    它只能满足第一种情况,但不能满足第二种情况。 (当我输入www.site.com/some_folder/test.php时,它仍会显示www.site.com/some_folder/test.php

    我应该在.htaccess文件中更改/添加什么才能实现第二种方案?

    非常感谢任何帮助。

    非常感谢。

1 个答案:

答案 0 :(得分:0)

将以下指令添加到.htaccess

RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule (.*)\.php$ /$1 [R=301,L,QSA,NC]

编辑: 如果你在Localhost:

RewriteBase /sitename/
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule (.*)\.php$ $1 [R=301,L,QSA,NC]