gpt4 book ai didi

php - 从网址中删除/重定向index.php以防止重复的网址

转载 作者:行者123 更新时间:2023-12-03 13:45:17 31 4
gpt4 key购买 nike

在标记为重复之前,请仔细阅读问题。

我们都知道,在.htaccess中使用:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

我们可以将所有流量重定向到 index.php,以便我们可以创建友好的网址并拥有一个前端 Controller 。

尽管该问题与 mod_rewrite相关,但为Laravel描述了该问题。

Laravel 4默认随附以下 .htaccess,它可以正常工作:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]


# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

</IfModule>

如果我们运行url mydomain.com/something并正确设置了 something的路由,则将启动某些 Controller 。到目前为止,它工作正常。

但是,在 Laravel 4中,我们将可以使用 mydomain.com/index.php/something到达相同的路线。可能使用Laravel网址创建,我们将在网址中没有带有 index.php的网址,但是还有其他问题。

例如,如果我们的竞争对手希望对我们造成伤害,他们可以简单地将Internet单个链接放入 mydomain.com/index.php/somethingmydomain.com/index.php/something2等的url,搜索引擎将看到重复的url。

当然,如果我们有自定义的PHP应用程序,则可以在PHP中完成它,而无需检查 $_SERVER['REQUEST_URI']并进行301重定向就可以了。我们当然可以在Laravel中做同样的事情,但是每次都必须用PHP编写此代码,可能有些开发人员可能会说用PHP这样做是不好的做法。

问题很简单:如何在.htaccess中将包含index.php的所有URL重定向到没有index.php的相同URL?

应重定向的示例网址:
  • mydomain.com/index.php/something应该重定向到mydomain.com/something(可以是任何东西-可以包含任何字符)
  • mydomain.com/index.php应该重定向到mydomain.com
  • mydomain.com/index.php?anything应该重定向到mydomain.com(任何可以包含任何字符的字符)
  • mydomain.com/index.phpanything应该重定向到mydomain.com,任何可以包含任何字符的字符)
  • 最佳答案

    RewriteEngine On行下面插入以下规则:

    RewriteCond %{THE_REQUEST} /index\.php [NC]
    RewriteRule ^(.*?)index\.php[^/] /$1? [L,R=302,NC,NE]

    RewriteCond %{THE_REQUEST} /index\.php [NC]
    RewriteRule ^(.*?)index\.php(?:/(.*))?$ /$1$2? [L,R=302,NC,NE]

    关于php - 从网址中删除/重定向index.php以防止重复的网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25105872/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com