htaccess将www重定向到非www仍然将.php扩展名放在uri中


htaccess redirect www to non-www still puts .php extension in uri

这里缺少一些东西:使用.htaccess删除.php扩展

我的目标:

将所有内容从www重定向到非www

.htaccess中的当前代码

RewriteEngine on
Options -Indexes
RewriteBase /
RewriteCond %{HTTP_HOST} ^www'.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ /$1.php [L]

当前行为:

将所有内容从www重定向到非www,但在URI中添加php文件扩展名".php"(php文件确实存在)

例如:

www.example.com/hello

重定向到

example.com/hello.php

我应该怎么做才能避免URI中的php扩展?

我真的不确定为什么,它使用以下代码。

@Panama jack的建议很有力:在设置所有301之前,在处理htaccess规则时使用302确实是一种方法。

RewriteEngine on
Options -Indexes
Options -Multiviews
RewriteBase /
RewriteCond %{HTTP_HOST} ^www'.(.*)$ [NC]
RewriteRule ^(.*)$ http://iPutMyWholeUrlHere.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ /$1.php [L]