如何从某些页面而不是整个网站中删除 .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
和 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]
删除特定页面的 .php 扩展名:
RewriteCond %{REQUEST_URI} ^/(index|contact)$ [NC]
:此条件检查请求的 URI 是否为 /index
或 /contact
(不区分大小写)。RewriteCond %{REQUEST_FILENAME}.php -f
:此条件检查相应的.php
文件是否存在。RewriteRule ^(index|contact)$ /$1.php [L]
:如果两个条件都满足,则此规则会将请求重写到相应的.php
文件,而不更改浏览器中的 URL。将对 .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 中不会显示扩展名,而网站的其余部分不受影响。