.htaccess将所有扩展名重定向到php

时间:2013-03-01 13:28:42

标签: php html apache .htaccess redirect

我最近更新了 .htaccess 文件,以隐藏网址的 .php扩展名。它很好用,当我尝试访问 domain.com/index 时,它会显示php文件。

当我输入 domain.com/index.php 时,它会将我重定向到 domain.com/index 网址并显示.php文件。

出于安全原因,我想将所有其他扩展名重定向到无扩展名网址以显示.php文件。我的问题是,我无法配置 .htaccess 来重定向众所周知的扩展程序,例如 .html .asp。 aspx .shtml 等到非扩展url,并将.php文件显示为内容。

我的.htaccess文件如下所示:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# php extension to no extension url
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+
RewriteRule ^(.+)\.php $1 [R=301,L]


# no extension to the .php file
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]

# this is for the index
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

# php extension to no extension url
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+
RewriteRule ^(.+)\.[a-zA-Z0-9]+$ $1 [R=301,L]

然后它不仅会重定向.php扩展名,还会重定向任何人。要使用它,请确保在末尾没有带点和最后一个字母数字字符串的URL。