Apache 从子目录中的URL中删除.php

Apache 从子目录中的URL中删除.php,apache,.htaccess,url-rewriting,centos6,directadmin,Apache,.htaccess,Url Rewriting,Centos6,Directadmin,在运行Apache2.4和DirectAdmin的CentOS 6上,我有一个wordpress网站。除了wordpress标准架构之外,我还希望有一些位于子目录中的半静态页面 文件系统为:/home/user/public\u html/sub/static1.php 所需的URL为:https://domain/sub/static1 目前,使用.php扩展名打开页面没有问题。但我想把它去掉。我曾尝试在.htaccess中添加一些重写规则,但由于请求被重定向到主页,因此失败 我试图在网上找到

在运行Apache2.4和DirectAdmin的CentOS 6上,我有一个wordpress网站。除了wordpress标准架构之外,我还希望有一些位于子目录中的半静态页面

文件系统为:
/home/user/public\u html/sub/static1.php

所需的URL为:
https://domain/sub/static1

目前,使用
.php
扩展名打开页面没有问题。但我想把它去掉。我曾尝试在
.htaccess
中添加一些重写规则,但由于请求被重定向到主页,因此失败

我试图在网上找到一些解决方案,包括这个网站,但没有什么能帮到我。我认为DirectAdmin与此问题有关


如果您的
/home/user/public\u html/sub/.htaccess文件中有任何帮助,请使用以下代码:

Options -MultiViews
RewriteEngine on

# remove php
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{REQUEST_URI} !/index\.php$
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]

# rewrite with php php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/sub/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

您可以使用Apachemod_rewrite

只需将此代码添加到根目录。htaccess


除了两件事之外,它还起作用:第一:在最后一次重写中,我需要在文档根之后包含
/sub
,第二:我现在遇到了
/sub/index.php
的问题。它被重定向到
/sub/index
,并给出404。我禁用了所有与重定向相关的行。但是它仍然发生。我更改了我的答案,没有重定向到
index.php
,它仍然被重定向到
index
。我临时编辑了
index.php
的所有链接,以避免得到404。我自己尝试了一些规则来避免这种情况,但失败了。这是你的缓存有问题。清除缓存或尝试使用其他浏览器无差异。我尝试了firefox私有模式,也尝试了Chrome匿名模式。同样的结果。
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]