如何在从www重定向到非www后停止显示php扩展

时间:2014-12-08 08:09:08

标签: php .htaccess redirect

我想隐藏php扩展所以写了

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

我想强制将www重定向到非www,所以我写了htaccess代码

RewriteBase /
#Force non-www:
RewriteCond %{HTTP_HOST} www.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

它很好地将www重定向到非www版本 但不是完美的, 当我输入网址 www.something.com 时,它会重定向到 something.com 但在给网址 www.something.com/test 时,它会重定向到 something.com/test.php

当我正在输入网址 www.something.com/example?id=1 时,它会重定向到 something.com/example.php?id=1

如何将 www.something.com/test 重定向到 something.com/test ,而不是在重定向后显示php扩展程序。

1 个答案:

答案 0 :(得分:1)

如果重定向规则出现在.php 重写规则之后,则问题在于重写网址被重定向。即:

  1. 第一条规则被点击,请求从www.example.com/test重写为www.example.com/test.php
  2. 第二条规则生效,重定向到example.com/test.php
  3. 通过在[L]之后添加RewriteRule ^(.*)$ $1.php,将您的重定向规则移到其他规则之上,或停止处理其他规则