【问题标题】:How to force hiding .php extension with .htaccess [duplicate]如何使用 .htaccess 强制隐藏 .php 扩展名 [重复]
【发布时间】:2013-08-21 14:07:47
【问题描述】:

大家好,这是我的 .htaccess 文件代码

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

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

它工作得很好,但我想知道我是否可以强制隐藏 .php 扩展名,所以即使我去了www.example.com/foo.php 我也会被重定向到www.example.com/foo

有什么办法可以做到吗??

【问题讨论】:

    标签: php .htaccess redirect mod-rewrite url-rewriting


    【解决方案1】:

    这是可能的,但我们必须注意不要生成重定向循环,当非 php URL 重定向到 php 时。并且 php URL 重定向到一个非 php 的。另外我不喜欢这个想法,因为它会创建一个额外的重定向,这会减慢网站响应速度。

    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
    #Redirect non-php to php and stop futher processing
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^(.*)$ $1.php [L]
    
    #redirect .php to non-php
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^(.*)\.php$ $1 [R=301,L]
    

    【讨论】:

      【解决方案2】:

      您可以匹配请求而不是 URI 以防止循环:

      RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)\.php
      RewriteRule ^ /%1 [L,R=301]
      

      您可以将其附加到 htaccess 文件的末尾。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-12
        • 2012-04-19
        • 1970-01-01
        • 2011-08-25
        • 2011-07-28
        • 1970-01-01
        • 2017-05-13
        • 1970-01-01
        相关资源
        最近更新 更多