Php .htaccess:已声明扩展名的文件重定向到文档根目录
我有一个奇怪的.htaccess问题,只发生在一个网站上 基本上,我试图删除.php扩展名,并将任何带有扩展名的页面重定向到没有扩展名的同一页面 这是我的.htaccessPhp .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> # ---------------------------------------------
<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]