【问题标题】:Making a rewriterule remove .php extension?制作重写器删除 .php 扩展名?
【发布时间】:2010-10-21 08:54:32
【问题描述】:

我想出了一个重写规则,可以在不输入 .php 扩展名的情况下转到我网站上的任何页面,因为它会自动添加到 url。

规则是:RewriteRule ^(\w+)/?$ /$1.php

它会获取您在我的索引中输入的任何内容并将 .php 添加到其中,因此您可以输入 http://sampardee.com/index 并提取 index.php

现在我的问题是如何检测用户何时输入http://sampardee.com/index.php并将其更改为http://sampardee.com/index

我怎么能用重写器做到这一点?

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    您需要对用户强制进行重定向而不匹配内部重定向:

    RewriteCond %{ENV:REDIRECT_STATUS} !200
    RewriteRule ^(\w+)\.php$ /$1 [R=301]
    
    RewriteRule ^(\w+)/?$ /$1.php
    

    这会将带有301 Moved Permanently 重定向的用户重定向到修改后的 URL。

    【讨论】:

    • 您可能需要玩弄 RewriteCond's then 以便两个规则不会同时匹配,但您描述的场景应该可以通过重写来实现。
    • 我修正了我的答案,它现在不会循环(你必须用 RewriteCond 检查它是否已经是重定向)。
    猜你喜欢
    • 2014-12-22
    • 2015-03-14
    • 2014-01-25
    • 1970-01-01
    • 2022-03-04
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 2019-04-21
    相关资源
    最近更新 更多