【问题标题】:CodeIgniter site in subdirectory, htaccess file maybe interfering with htaccess file in main directory?子目录中的 CodeIgniter 站点,htaccess 文件可能会干扰主目录中的 htaccess 文件?
【发布时间】:2012-11-01 10:11:22
【问题描述】:

在我的 CodeIgniter 站点(托管在 GoDaddy 上)中,导航到任何页面,但索引给了我这个错误:

没有指定输入文件。

四处搜索,似乎原因一定与我的 .htaccess 情况有关。设置的方式,也许这最终会改变,是我的 CI 站点位于主域的子目录中。 CI 站点和主域都有自己的 .htaccess 文件。 CI htacess 文件位于应用程序文件夹中:

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /SubDomain/index.php?$1 [L]
</IfModule>

这里的主 htaccess 文件比 CI 高两级,因此读取:

RewriteEngine on
RewriteCond %{SERVER_PORT} 80
rewriterule ^(.*)$ https://www.MainDomain.org/$1 [r=301,nc]

恐怕这两组重写规则相互冲突,我真的不知道该怎么办。我可以更改任何一个 htaccess 文件,并且真的很想让他们和平与和谐地一起工作。然而,这也可能与 htaccess 无关。

【问题讨论】:

  • 第二组重写规则只是在不安全的连接上启用 SSL 安全性。它不应该以任何方式影响 CodeIgniter 规则。
  • 我想这意味着我用 htaccess 文件找出了错误的树。
  • 很抱歉,我不记得我是如何解决这个问题的,但我确实记得在尝试将 CI 安装到子文件夹时遇到了同样的问题(前段时间)。我认为对 .htaccess 文件和 index.php 文件的更改组合为我解决了这个问题。也许您可以在 Google 上找到指南,或者其他人可能有更具体的建议?
  • 你是否更新了config/config.php中的base_url配置参数($config['base_url'])?如果您使用 site_url 或任何东西来生成适当的链接,它将链接到错误的位置。
  • 您是否在虚拟主机中将主站点和子域设置为单独的站点?

标签: php .htaccess codeigniter routing rewrite


【解决方案1】:

CI .htaccess 不应位于应用程序文件夹中;它应该位于SubDomain 文件夹的根目录中。例如/public_html/SubDomain/.htaccess

另外,在那个.htaccess,你需要设置RewriteBase

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on
    RewriteBase /SubDomain
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?$1 [L]
</IfModule>

【讨论】:

猜你喜欢
  • 2021-10-04
  • 2015-02-16
  • 2011-03-11
  • 1970-01-01
  • 2019-04-01
  • 1970-01-01
  • 2014-10-24
  • 2013-07-08
  • 2013-07-02
相关资源
最近更新 更多