【问题标题】:Redirect url with/without .php extension to index.php using htaccess使用 htaccess 将带/不带 .php 扩展名的 url 重定向到 index.php
【发布时间】:2016-02-01 16:39:08
【问题描述】:

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

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

但是,如果我加载 www.example.com/register.php,它不会将我发送到 index.php,而是保留 URL。怎么会?

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

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

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

【问题讨论】:

  • 你想将 php 文件(如果请求带有扩展名)重定向到 404 吗?
  • 不是register.php 一个真实的文件吗?
  • 是的,是的……但是,我不想在文件上使用扩展名……只有干净的 URL。
  • 你需要保持你的重定向分开,因为你不能同时重定向和重写。
  • @MikeRockett 我不重定向。我希望所有带有 php 文件扩展名的 URL 都转到 index.php,而不更改 URL。

标签: php .htaccess url routing


【解决方案1】:

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

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

【讨论】:

  • 如果你能帮帮我会很高兴,请参阅问题更新:)
【解决方案2】:

使用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 文件扩展名的 URL 重定向到自定义 404 页面。

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

这是 404 页面:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 2016-07-10
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多