修改.htaccess以将php重定向到html,但忽略一个页面

cgyqldqp  于 2023-04-12  发布在  PHP
关注(0)|答案(1)|浏览(80)

我使用自定义php脚本(php v.7),并有5个php页面:index.php、product1.php、product2.php、product3.php、admin.php。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.+?)\.php$ /$1.html [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+?)\.html$ /$1.php [L]
</IfModule>
<FilesMatch ".(ico|css|jpeg|png|woff|woff2|webp)$">
    Header set Cache-Control "max-age=604800, public, no-cache"
</FilesMatch>
Options -Indexes

这个htaccess代码将非www重定向到www,http重定向到https,php页面重定向到.html格式。
问:我怎么能重定向从php到html只有4的5页,添加一个忽略规则的admin.php?我不想有php到html重定向为admin.php
感谢您的评分
我尝试了超过15个变种,没有一个工作在4个小时的搜索上stackoverflow

1sbrub3j

1sbrub3j1#

您可以在RewriteRule之前添加RewriteCond %{REQUEST_URI} !^/admin.php$以忽略admin.php页面

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_URI} !^/admin.php$
RewriteRule ^(.+?)\.php$ /$1.html [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+?)\.html$ /$1.php [L]

相关问题