Php .htaccess:已声明扩展名的文件重定向到文档根目录

Php .htaccess:已声明扩展名的文件重定向到文档根目录,php,.htaccess,mod-rewrite,redirect,url-rewriting,Php,.htaccess,Mod Rewrite,Redirect,Url Rewriting,我有一个奇怪的.htaccess问题,只发生在一个网站上 基本上,我试图删除.php扩展名,并将任何带有扩展名的页面重定向到没有扩展名的同一页面 这是我的.htaccess <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteBase / </IfModule> # ---------------------------------------------

我有一个奇怪的.htaccess问题,只发生在一个网站上

基本上,我试图删除.php扩展名,并将任何带有扩展名的页面重定向到没有扩展名的同一页面

这是我的.htaccess

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On
    RewriteBase /
</IfModule>
# ------------------------------------------------------------------------------
# | Remove the slash                                                           |
# ------------------------------------------------------------------------------
<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+)/$ $1 [R=301,L]
</IfModule>
# ------------------------------------------------------------------------------
# | Redirect to extensionless url                                              |
# ------------------------------------------------------------------------------
<IfModule mod_rewrite.c>
    RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
    RewriteRule ^(.+)\.php$ $1 [R=301,L]
</IfModule>

# ------------------------------------------------------------------------------
# | Pretty urls                                                                |
# ------------------------------------------------------------------------------
<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule .* - [L]

    # rules here

</IfModule>

<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.php -f
    RewriteRule ^(.*)$ $1.php [L]
</IfModule>

选项+FollowSymlinks
重新启动发动机
重写基/
# ------------------------------------------------------------------------------
#|删除斜杠|
# ------------------------------------------------------------------------------
重写cond%{REQUEST_FILENAME}-D
重写规则^([^/]+)/$$1[R=301,L]
# ------------------------------------------------------------------------------
#|重定向到无扩展url|
# ------------------------------------------------------------------------------
重写cond%{u请求}^(+)\.php([#?][^\]*)?\HTTP/
重写规则^(+)\.php$$1[R=301,L]
# ------------------------------------------------------------------------------
#|漂亮的URL|
# ------------------------------------------------------------------------------
RewriteCond%{REQUEST_FILENAME}-f[或]
RewriteCond%{REQUEST_FILENAME}-d
重写规则。*-[L]
#这里的规则
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}\.php-f
重写规则^(.*)$$1.php[L]
因此,如果我键入
website.com/page
它工作并显示页面,但是
website.com/page.php
将我重定向到
http://website.com/var/www/vhosts/website.com/httpdocs/page

这个.htaccess可以在其他共享网站上成功运行,但这个特定的网站不能

问题在哪里?这取决于其他配置吗?不幸的是,我没有访问错误日志的权限,我只有这个文件


谢谢。

将您的扩展删除规则更改为:

# ------------------------------------------------------------------------------
# | Redirect to extensionless url                                              |
# ------------------------------------------------------------------------------
RewriteCond %{THE_REQUEST} \s/+(?:index)?(.*?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=302,L,NE]