使用htaccess将带/不带.php扩展名的URL重定向到index.php

时间:2016-02-01 16:39:08

标签: php .htaccess url routing

我使用Shephertz非常基本的URL路由机制来路由我的页面。 但是我遇到了文件扩展名的问题。

如果我加载www.example.com/register,我会收到index.php,但请保留网址。

但是,如果我加载www.example.com/register.php,则不会将我发送到index.php,但会保留该网址。怎么样?

这是我的.htaccess文件,适用于非扩展程序:

Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

我如何将这两者结合起来? I want both of these to be marked blue...

2 个答案:

答案 0 :(得分:0)

要将所有外部php请求重定向到404,您可以在.htaccess中使用以下规则:

RewriteCond %{THE_REQUEST} /.+\.php [NC]
RewriteRule ^ - [L,R=404]

答案 1 :(得分:0)

使用RewriteCondRewriteRule解决了这个问题。 这就是我.htaccess现在的样子:

Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} /.+\.php [NC]
RewriteRule ^ index.php [QSA,L]

我现在可以使用Shephertz的路由机制将带有.php文件扩展名的所有网址重定向到自定义404页面。

  • www.example.com/example.php - > 404page.php
  • www.example.com/example - >使用example.php

这是404页面:

enter image description here

这是没有.php文件扩展名的页面

enter image description here