【问题标题】:How to remove .php extension from url如何从 url 中删除 .php 扩展名
【发布时间】:2021-07-22 12:46:07
【问题描述】:
<?php
$url = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$url_array = explode("/", $url);
$action = end($url_array);

switch ($action) {
    case "login":
        login();
        break;
    case "register":
        register();
        break;
}
?>

这里我需要从我的 URL 中删除 .php 扩展名 就像我必须为登录页面输入https://example.com/user.php/loginhttps://example.com/user.php/register 用于注册页面。

但我需要登录页面的 URL 为 https://example.com/user/loginhttps://example.com/user/register 用于注册页面等等

这里我想从 user 页面中删除 .php 扩展名。 请为 .htaccess 建议任何代码

【问题讨论】:

标签: php sql-server .htaccess web-services


【解决方案1】:

请试试这个

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)/(.+)$  https://www.example.com/$1.php/$2 [L,NC,P]

当然,你把这条规则放在哪里也很重要。因为它是一个可能包含很多链接的规则。

我更喜欢以下规则:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^user/(.+)$  https://www.example.com/user.php/$1 [L,NC,P]

【讨论】:

  • 网址在同一个站点上,所以不需要P。您可以从目标字符串中删除主机名和方案以进行内部重定向。
  • 非常感谢,两者都在工作,但是当我使用上面的代码时,example.com/user/login 工作正常,但像 example.com/terms 这样的常量页面显示 404 错误。
【解决方案2】:

.htaccess 文件中,添加以下行

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

【讨论】:

  • 如果没有 [P] 链接将被重定向并且最终地址将改变,我认为在这种情况下我们不希望链接改变。
猜你喜欢
  • 1970-01-01
  • 2012-08-27
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2023-04-05
  • 2020-08-11
相关资源
最近更新 更多