【问题标题】:Proper way to remove file extensions删除文件扩展名的正确方法
【发布时间】:2016-12-16 02:00:11
【问题描述】:

在 Apache Web 服务器上使用没有文件扩展名的 URL 的正确方法是什么?目前我在 .htaccess 文件中使用这个实现

RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L]

但是,一些 URL 有一个尾随 /,而另一些则没有,我不知道为什么。我更喜欢尾随 / 但它有什么不同吗?另外,如果输入'about.php',我怎样才能让它转到'about'呢? drexel.edu 有我想要复制的文件结构,但我不确定他们是如何做到的。

另外,这对 SEO 有何影响?搜索引擎会将“about.php”和“about”等页面视为两个单独的重复页面,还是他们知道这是同一件事而无需我做任何额外的事情?

【问题讨论】:

    标签: php apache .htaccess web seo


    【解决方案1】:

    您可以使用这两条规则来有效地删除.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

    【讨论】:

    • 这似乎显着增加了现在加载页面所需的时间。
    • 页面加载时间与重写规则无关,除了这些是我的实时网站的规则。您应该彻底清除浏览器缓存,然后进行测试。
    • 也许只是当时服务器速度慢;现在看起来很好。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 2017-05-05
    • 1970-01-01
    相关资源
    最近更新 更多