最近我的托管服务提供商一直在将他们的 apache 系统更新到 2.4.4。在这样做时,它导致我的表达式引擎站点中断,因为我现在需要强制查询字符串以使站点运行。
据我了解,您只需将 .htaccess 规则中的一行更新为 ...
RewriteRule ^(.*)$ /index.php?/$1 [L]
不幸的是,解决这个问题并不像这样简单。
我的网站使用自定义表达式引擎插件来检测他们使用 IP to Nation 模块在世界的哪个区域。基本上发生的情况是,如果您来自美国,您会看到包含美国内容的网站,如果您来自其他任何地方,它会将“国际”附加到 URI 的第一部分,它将根据第一部分显示国际内容我们的 URI
例如
http://www.example.com/segment_1/segment_2/segment_2 = US SITE
http://www.example.com/international/segment_1/segment_2/segment_2 = INTERNATIONAL SITE
当我尝试将该查询字符串添加到 index.php 的 rewriteRule 时,它会破坏国际站点,我不知道为什么。
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteRule /international/(.*)$ /index.php/$1 [L]
添加“?” 修复RewriteRule ^(.*)$ /index.php?/$1 [L]
美国网站但打破国际网站说它找不到国际页面。
添加“?” 修复RewriteRule /international/(.*)$ /index.php?/$1 [L]
国际站点,但美国站点将无法工作,因为它需要查询字符串。
并且将它添加到它们两者都将不起作用。
我显然在 .htaccess 中遗漏了一些东西来克服这个问题,但我似乎无法生成正确的语法。
有任何想法吗?