gpt4 book ai didi

php - 使用 htaccess 文件将所有流量重定向到 index.php 并将非 www 重定向到 www

转载 作者:行者123 更新时间:2023-12-04 14:27:48 25 4
gpt4 key购买 nike

我查看了其他问题,但似乎没有一个能解决我想做的事情。目前我的 .htaccess 文件中有以下内容,用于将所有非 www 流量重定向到 www:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

这很好用。无论文件是否存在,如果有人试图访问 example.com 或 example.com/page-not-found,它将永久重定向到 www.example.com 或 www.example.com/page-not-found。

我想改变网站的运行方式,让所有请求都通过特定文件(例如主目录中的 index.php)进行路由。应该发生的是,如果有人去 www.example.com/any-page,它仍然会显示 www.example.com/any-page,但我会在 www.example.com/index.php 中处理它,这样我就可以在一个文件中处理所有流量。我可以通过以下方式做到这一点:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?path=$1 [NC,L,QSA]

但是,这只会在请求的文件夹不存在时重定向(并且它不会将 example.org/any-folder 更改为 www.example.org/any-folder

简而言之,有没有一种方法可以通过单个文件路由所有请求(即使请求的文件存在),并为所有非 www 流量执行 301 重定向到 www?

最佳答案

是的,有。首先保持原来的规则不变(略有修改,见下文):

RewriteEngine On
RewriteCond %{HTTP_HOST} !=www.example.com
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

之后,添加:

RewriteCond %{HTTP_HOST} =www.example.com
RewriteRule ^(.*)$ index.php?path=$1 [QSA]

与您已有的非常相似,除了:

  • 删除最后一条规则上不必要的标记
  • 在第二条规则上添加对主机的检查
  • 在不属于 .htaccess 文件匹配项的第二条规则中删除替换斜线
  • 稍微更改 RewriteCond 检查,包括重定向任何不是 www.example.com 而不仅仅是 example.com 的内容。我建议指向 ww.example.com 并类似于您的网站,这样拼写错误就会随之重定向(在大多数情况下,我个人只是将 *.example.com 指向我的网站)。

让我知道任何问题。

关于php - 使用 htaccess 文件将所有流量重定向到 index.php 并将非 www 重定向到 www,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41970064/

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