在修改我的.htaccess文件以从URL中隐藏.php扩展名之后,一些目录项无法找到


After modifying my .htaccess file to hide the .php extension from the URL, some directory items are unable to be found

最近,我得到了一些帮助,修改了.htaccess文件,以在url中隐藏.php扩展名。在我开始工作后,我的网站出现了一些错误。无论出于何种原因,子目录中的任何php页面都会返回404错误。例如:

mywebsite.com/test/test.php(此404)

但是

mywebsite.com/test/test.html(这很好)

由于这是在我的.htaccess文件被修改后才开始发生的,我认为问题就在那里。该文件包含以下内容:

RewriteEngine On
# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://www.mywebsite.com/$1 [R=301,L]
# Redirect external .php requests to extensionless url
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} /.+?'.php [NC]
RewriteRule ^(.+?)'.php$ /$1 [R=301,L,NE]
# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]
ErrorDocument 404 /404.php
DirectoryIndex index.php

如果我能提供更多信息来帮助解决这个问题,请告诉我!

谢谢你的帮助。

在根目录中尝试这些规则。htaccess:

ErrorDocument 404 /404.php    
DirectoryIndex index.php
RewriteEngine On
RewriteBase /
# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ /$1 [R=301,L,NE]
# Redirect external .php requests to extensionless url
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} /.+?'.php [NC]
RewriteRule ^(.+?)'.php$ /$1 [R=301,L,NE]
# Resolve .php file for extensionless php urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1'.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [L]

如果您打算将您的PHP项目结构隐藏为目录树以供公众访问。。。您应该考虑在项目的根目录中添加一个.htaccess文件,只需一行

将以下行添加到.htaccess文件中。

Options -Indexes