.htaccess 正在移除. php副档名,除了名为enquire的子目录

vmjh9lq9  于 2022-11-30  发布在  PHP
关注(0)|答案(2)|浏览(131)

请协助我停止从删除子目录中的". php"扩展名,例如:https://www.example.com/enquire/contactmail而不是:https://www.example.com/enquire/contactmail.php

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d

\#####exclude /cp folder####

RewriteCond %{REQUEST_URI} !^/enquire

RewriteCond %{REQUEST_FILENAME}\\.php -f

RewriteRule ^(.\*)$ $1.php

RewriteCond %{THE_REQUEST} ^\[A-Z\]{3,9}\\ /((?!cp)\[^.\]+)\\.php

RewriteRule ^/?(.\*)\\.php$ /$1 \[NC,L,QSA,R=301\]

RewriteRule ^enquire/(.\*)$ contactmail.php?s=$1 \[NC,L,QSA\]

RewriteRule ^enquire/(\[0-9\]+)$ contactmail.php?a=$1 \[NC,L,QSA\]
jfewjypa

jfewjypa1#

据我所知,您有一个工作解决方案,以重写传入的请求没有“.php”扩展名的内部资源与“文件名扩展名”。
现在,您要问如何从中添加一个例外,以便内部重写 * 不会 * 应用于请求,这些请求的目标是所请求路径中特定文件夹(物理或虚拟文件夹)内的资源。
如果这是正确的,那么你确实应该为那些请求实现一个异常。异常应该在更一般的规则 * 之前 * 实现。所以在配置文件中更进一步,因为它是从上到下处理的。
这大概就是您要寻找的内容:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d

# exception for the /enquire request path
RewriteRule ^enquire/(\d+)$ contactmail.php?a=$1 [NC,END,QSA]
RewriteRule ^enquire/(.*)$ contactmail.php?s=$1 [NC,END,QSA]

# redirect requests that specify a ".php" extension
RewriteRule ^(.*)\.php$ $1 [NC,L,QSA,R=301]

# rewrite requests if a corresponding php file exists
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php
3hvapo4f

3hvapo4f2#

只需使用blow .htaccess删除.php扩展名

IndexIgnore * # prevent directory listing
Order deny,allow
Allow from *

# ------------------------------------------
# Rewrite so that php extentions are not shown
RewriteEngine on

#.php URL Rewrite
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

相关问题