从某些页面删除.php扩展名

问题描述 投票:0回答:1

如何从某些页面而不是整个网站中删除 .php 扩展名。但有几页 喜欢 索引.php 联系方式.php 然后留下剩下的

RewriteEngine on 
#redirect /file.php to /file
RewriteCond %{THE_REQUEST} \s/([^.]+)\.php [NC]
RewriteRule ^ /%1 [NE,L,R]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)/?$ /$1.php  [L]
php .htaccess
1个回答
0
投票

要从特定页面(如

.php
index.php
)中删除
contact.php
扩展名,同时保持站点的其余部分不变,您可以在
.htaccess
文件中使用 mod_rewrite 规则。您提供的规则很接近,但我们需要调整它们以仅适用于特定文件并确保正确定义条件。

以下是修改

.htaccess
文件以实现此目的的方法:

RewriteEngine On

# Remove .php extension for specific pages
RewriteCond %{REQUEST_URI} ^/(index|contact)$ [NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(index|contact)$ /$1.php [L]

# Redirect requests for .php files to extension-less URLs for specific pages
RewriteCond %{THE_REQUEST} \s/(index|contact)\.php [NC]
RewriteRule ^(index|contact)\.php$ /$1 [L,R=301]

说明:

  1. 删除特定页面的 .php 扩展名:

    • RewriteCond %{REQUEST_URI} ^/(index|contact)$ [NC]
      :此条件检查请求的 URI 是否为
      /index
      /contact
      (不区分大小写)。
    • RewriteCond %{REQUEST_FILENAME}.php -f
      :此条件检查相应的
      .php
      文件是否存在。
    • RewriteRule ^(index|contact)$ /$1.php [L]
      :如果两个条件都满足,则此规则会将请求重写到相应的
      .php
      文件,而不更改浏览器中的 URL。
  2. 将对 .php 文件的请求重定向到特定页面的无扩展名 URL :

    • RewriteCond %{THE_REQUEST} \s/(index|contact)\.php [NC]
      :此条件检查原始请求是否为
      index.php
      contact.php
    • RewriteRule ^(index|contact)\.php$ /$1 [L,R=301]
      :如果满足条件,此规则会将请求重定向到带有 301(永久)重定向的无扩展名 URL。

实施这些规则后,对

index
contact
的请求将由
index.php
contact.php
提供服务,URL 中不会显示扩展名,而网站的其余部分不受影响。

© www.soinside.com 2019 - 2024. All rights reserved.