【问题标题】:Codeigniter site replicated in subdirectory not displaying individual pages在子目录中复制的 Codeigniter 站点不显示单个页面
【发布时间】:2012-06-09 00:17:01
【问题描述】:

我们刚刚将 Codeigniter 网站(从我们的根域)复制到同一根域的子目录中(所有 config.php 更改和新数据库等)。但是,页面链接不会显示单个页面,但浏览器只是重新加载 index.php 页面内容(就像它正在加载新页面一样)并将浏览器窗口中的 URL 更改为正确的页面。

这真的很奇怪,我花了好几个小时来研究它,所以我希望这里的人可以给我一个起始搜索点。

供您参考,子目录中的 .htaccess 是:

RewriteEngine on
RewriteRule ^test.php$ mod_rewrite.php
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

【问题讨论】:

  • 您是否复制了 .htaccess?记住它的隐藏
  • 是的,完全一样 - 我已经用它的内容编辑了我的原始帖子。

标签: .htaccess codeigniter url redirect subdirectory


【解决方案1】:

如果现在在以前位于根目录的子目录中安装了新的 codeigniter,则需要在 htaccess 的 index.php 部分前面包含子目录的名称

类似这样(更改在最后一行):

RewriteEngine on

RewriteRule ^$ /dev/index.php [L]
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico|zip\.php|resources)
RewriteRule ^(.*)$ /dev/index.php?/$1 [L]

dev 应该更改为您的子目录的名称。另外,如果这些都不起作用,并且您的根目录上有一个 htaccess,它可能会影响这个子目录。

【讨论】:

  • 尽管清除了缓存,让我们的网站在 Cloudflare 上处于开发模式,并在清除缓存的情况下启动新的浏览器会话,但遗憾的是没有任何变化。这太奇怪了。页面 URL 更改为浏览器 URL 栏中应有的内容,但内容仍保留为索引文件。
  • 嗯。现在我仔细观察,那里的 test.php 部分是做什么用的?我正在编辑我的答案以包含一个适用于我的标准重写规则集。你可以试试。如果没有换行符,你的对我来说有点难以阅读。
  • 它不允许我在这里添加换行符。 。 test.php 是一个简单的文件,用于检测 mod_rewrite 是否真的在运行……它是。
  • 是的,粘贴多行代码有时很烦人。自己编写代码标签比使用 ctrl+k 更容易
  • .htaccess 文件在不久前的另外两个安装中是相同的 - 这次我真的看不出问题出在哪里。哎呀!
【解决方案2】:

现在经过多次不同的尝试后排序!

root -> application -> config(第 46 行)中的文件 config.php 最初是:
$config['uri_protocol'] = ($_SERVER['SERVER_ADDR'] == '127.0.0.1') ? 'AUTO' : 'ORIG_PATH_INFO';

应该是:
$config['uri_protocol'] = ($_SERVER['SERVER_ADDR'] == '127.0.0.1') ? 'AUTO' : 'PATH_INFO';

现在一切正常。

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 2014-03-25
    • 2019-08-25
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    相关资源
    最近更新 更多