gpt4 book ai didi

.htaccess - mod_rewrite 强制 www 前缀有选择地工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:41:59 26 4
gpt4 key购买 nike

我正在我的 .htaccess 文件中使用其他 mod_rewrite 条件,并且还想确保我的域始终以 www 为前缀(用于 session 存储和 seo)。但是,对于我当前的 .htaccess,如果我去 example.com 它工作得很好,但是如果我去 example.com/folder 它将重定向到 www.example.com(省略/folder)我做错了什么在这里?

我的 .htaccess 文件

Options +FollowSymLinks  
RewriteEngine on

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

# Rules for: actions
RewriteRule ^([-_!~*'()$a-zA-Z0-9]+)/?$ ./date/index.php?action=$1 [L,QSA]

最佳答案

重写引擎是多 channel 的。它循环选择路径上最低的 .htaccess 文件,RewriteEngine On 直到不再发生重写更改。因此,对于这个 example.com/folder/xxx 请求——如果 .htaccess 文件存在于 DOCROOT/folder 中,那么它将被使用并且DOCROOT/.htaccess 中的重写规则将被忽略

您可以在 DOCROOT 或层次结构中使用单个 .htaccess。单个 DOCROOT .htaccess 文件具有较小的性能优势,因为引擎只需要打开并读取单个 .htaccess 文件。我在这篇文章中对此进行了更详细的描述,More on using Rewrite rules in .htaccess files

您没有指定 RewriteBase,因此在您的情况下,引擎通常会丢失目录。所以我会在 DOCROOT/.htaccess 中使用以下内容:

Options +FollowSymLinks  
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} =example.com
RewriteRule ^.* http://www.example.com/$0 [R=301,L]

其中 DOCROOT 是您的 Apache 文档根目录。

我也很好奇您为日期模式设置的包含字符集。对我来说似乎很奇怪,但撇开这个不谈,最好写成

RewriteRule ^([-_!~*'()$\w]+)/?$  date/index.php?action=$1    [L,QSA]

当然,假设你想激活 DOCROOT/date/index.php

关于.htaccess - mod_rewrite 强制 www 前缀有选择地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9224462/

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