从 URL 中删除 .php 和 .html

从 URL 中删除 .php 和 .html

如何从我的 URL 中删除.php和?.html

因此,事实不应该如此,而domain.com/about.php应该是如此domain.com/about

.htaccess在 OVH 的网站托管上使用了相同的代码,但自从购买 VPS 并自己操作后,它就不起作用了。我只是收到 404 错误

该服务器上未找到所请求的 URL /about。

我在用着:

RewriteEngine On
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://domain.com/$1 [R=301,L]
DirectorySlash On

答案1

我的做法是:

RewriteCond %{REQUEST_URI} !(\.[^./]+)$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule (.*) $1.html [L]

RewriteCond %{REQUEST_URI} !(\.[^./]+)$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.htm -f
RewriteRule (.*) $1.htm [L]

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

每个节都有以下逻辑:

  1. 如果请求的文件没有扩展名,即不匹配\.[^./]+)$

  2. 请求的文件不是目录,

  3. 请求的文件不存在,

  4. 存在具有请求的名称和扩展名.html(或.htm,或.php)的文件,然后

  5. 提供该文件。

最后或最终的手段[L]:不再进行重写,因此服务器可以安全地跳过其余​​的重写规则。

相关内容