【问题标题】:htaccess add .php to everything without an extension alreadyhtaccess 将 .php 添加到没有扩展名的所有内容
【发布时间】:2013-06-07 13:54:27
【问题描述】:

我正在寻找重复的 SO,但我无法找到我认为应该是一个简单的答案。

在没有扩展名的情况下添加.php 的重写规则是什么?

例子:

www.website.com/styles.css -> www.website.com/styles.css

www.website.com/login -> www.website.com/login.php

谢谢!

【问题讨论】:

  • 您希望在什么情况下执行此操作?这些链接是否在文件中?它们是否在您动态生成的网页中?
  • 没有什么花哨的。我网站上的所有页面都是 php 脚本,我只想使用漂亮的 URL。我目前对我网站上的每个页面都有一个规则,因为我不知道简单的方法:RewriteRule ^login$ login.php [L] 对于我拥有的每个页面......我希望用户能够输入 /login 并获得登录信息。 php页面
  • 我会使用 /login/ 作为 dir 和 index.php 而不是 login.php 并从 url 中删除 index.php。

标签: apache .htaccess


【解决方案1】:

要扩展@quinxorin 的答案,您还可以执行以下操作。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteCond %{REQUEST_FILENAME}\.php ^(.*)\.php(.*)$
RewriteRule .* %1.php?%2 [QSA]

这会将 url 的其余部分附加到结果中。即/page/1234 变为/page.php?1234

【讨论】:

    【解决方案2】:

    以下内容可能适合您的需求:

    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^(.+)$ $1.php [L]
    

    这将自动将 .php 扩展名添加到不带扩展名的文件名中。它可能会尝试将something.css 重命名为something.css.php,但只有在something.css.php 存在时才会这样做。

    【讨论】:

    • 如何将它与CheckSpelling 结合起来以添加不区分大小写的功能?我正在尝试,但失败了!
    • 我不知道这个问题的答案 - 我建议再问一个问题,以征求更多回复。
    猜你喜欢
    • 2019-07-07
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多