【问题标题】:Remove file extension in apache 2.4删除 apache 2.4 中的文件扩展名
【发布时间】:2017-11-17 11:29:30
【问题描述】:

我想引用一个没有 .php 扩展名的页面,而不是使用 .htaccess 文件,如文档所述:

如果您有权访问,则应完全避免使用 .htaccess 文件 到 httpd 主服务器配置文件。使用 .htaccess 文件会降低 Apache http 服务器的速度。

【问题讨论】:

  • 如果您想付钱让我们为您做这件事,您有没有尝试过或者您有特定的预算?文档说你应该在主服务器配置而不是 htaccess 文件中重写规则。以同样的方式完成。
  • 这是我读过的最奇怪的建议。如果您想在服务器上移动它们而不是不断地摆弄每个网络服务器的主要配置,那么您想为站点使用 .htaccess 文件。将特定于目录的配置全部放在一个地方是停止任何持续部署设置的好方法。
  • 只需在您的.htaccess 中添加代码
  • 我应该在 .htaccess 文件中写什么?
  • 在这里阅读我的答案:stackoverflow.com/questions/44893119/…

标签: php apache


【解决方案1】:

如果您不想使用.htaccess,那么您可以直接在服务器配置(或<VirtualHost> 容器)中使用以下内容。

RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule !\.\w{2,4}$ %{REQUEST_URI}.php [L]

RewriteRule 模式 !\.\w{2,4}$ 确保只处理尚未包含文件扩展名的请求(因此自然会排除静态资源)。

条件RewriteCond 指令)确保目标.php 文件在重写请求之前存在。

请注意,这并不严格“删除”文件扩展名。它通过在内部重写请求以附加 .php 文件扩展名,从而允许无扩展名 URL 工作,因此它映射到底层 .php 文件。您实际上需要在 HTML 源代码中“删除”.php 扩展。

(如果需要,此规则也将在 .htaccess 中保持不变。)

注意:如果您没有使用.htaccess,那么您应该确保完全禁用.htaccess 覆盖,否则服务器仍会搜索它们,您将无法获得全部好处。 (虽然.htaccess 文件确实没那么糟糕。)

【讨论】:

    【解决方案2】:

    您可以在您网站的虚拟主机中编写您想要的配置(我认为是“重写规则”)以避免 .htaccess。在此处查看文档https://httpd.apache.org/docs/2.4/en/vhosts/examples.html

    【讨论】:

      【解决方案3】:

      我认为没有理由不为此使用.htaccess

      使用 .htaccess 删除 php 扩展:

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

      就是这样,您现在可以链接您的页面而无需添加 php 扩展。例如:

      <a href="http://example.com/index">Home</a>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-29
        • 1970-01-01
        • 1970-01-01
        • 2012-05-12
        • 1970-01-01
        • 1970-01-01
        • 2015-06-06
        相关资源
        最近更新 更多