正确的方法删除文件扩展名


Proper way to remove file extensions

在Apache web服务器上没有文件扩展名的url的正确方法是什么?目前我在。htaccess文件

中使用此实现
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*'.php$ %{REQUEST_FILENAME}.php [L]

然而,一些url有尾/,而另一些没有,我不知道为什么。我更喜欢后面加一个/,但这有区别吗?另外,如果输入'about.php'我怎么能让它去'about'代替?.edu有我想复制的文件结构,但我不确定他们是如何做到的。

还有,这对SEO有什么影响?搜索引擎会把"about.php"answers"about"这样的页面算作两个独立的重复页面吗?或者他们知道这是同样的事情,而不需要我做任何额外的事情吗?

您可以使用这两个规则来有效地删除.php扩展并照顾SEO排名:

RewriteEngine On
# To externally redirect /file.php to /file
RewriteCond %{THE_REQUEST} 's/+(.+?)'.php['s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]
# To internally redirect /file OR file/ to /file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

由于第一个301重定向搜索引擎将不缓存/file.php页面,只有/file将在搜索结果中缓存