【问题标题】:Simple htaccess Rewrite Rule (remove .php)简单的 htaccess 重写规则(删除 .php)
【发布时间】:2014-02-04 08:19:20
【问题描述】:

我有一个使用 .php 文件的简单网站,例如

www.domain.com/about-us.php

www.domain.com/contact.php

现在我想创建一个重写规则,将这些 URL 变成:

www.domain.com/about-us/

www.domain.com/contact/

所以基本上只是删除 .php 结尾。我想从这条规则中排除一些文件,例如“mailer.php”。我怎样才能做到这一点?

【问题讨论】:

    标签: apache .htaccess mod-rewrite redirect


    【解决方案1】:

    您不需要重写规则。只需将此链接添加到您的 .htaccess 顶部即可:

    Options +MultiViews
    

    了解更多信息:httpd.apache.org/docs/2.2/content-negotiation.html

    更新

    要将 /dir/file.php 从外部重定向到 /dir/file 将此代码放入您的 DOCUMENT_ROOT/.htaccess 文件中:

    Options +FollowSymLinks -MultiViews
    RewriteEngine On
    
    RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
    RewriteRule ^ /%1 [R=301,L,NE]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/$1.php -f
    RewriteRule ^(.+?)/?$ /$1.php [L]
    

    【讨论】:

    • 谢谢 :) 似乎可行,但是,Google 会有什么问题吗?显然我希望 Google 只索引非 .php 版本;)
    • 请参阅上面的更新代码以获取 .php 到非 PHP 的 301 个旧链接。
    • 很好,这正是我所需要的。太感谢了! :)) 我只注意到一件事:www.domain.com/contact 确实可以与 css/js/image 链接完美配合,但 www.domain.com/contact/ (末尾带有斜线)不能。有没有一种简单的方法来解决它,还是我必须在任何地方使用绝对链接?
    • 最好使用绝对链接。或者,您可以尝试在页面标题中添加此内容:<base href="/" />
    • 太棒了!现在完美运行
    猜你喜欢
    • 2011-08-20
    • 2017-03-16
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多