我的网站在本地工作得很好,但是当我将其上传到我的主机(GoDaddy)时就崩溃了 - 当点击我网站上的链接时,我收到了“未指定输入文件”。 我偶然发现了这个 - https://github.com/EllisLab/CodeIgniter/wiki/Godaddy-Installation-Tips 并尝试了他们的第一个提示
$config['index_page'] = "index.php?";
与通常设置的方式相反(不带问号)
这样可行,现在我的网站链接不再被破坏了。 但是,现在我的 LightOpenID库中断了(它无休止地重定向)。
如果有人清楚地解释了URL的内容以及我可以做些什么 A)从index.php中删除问号,仍然让我的网站工作 要么 B)保持?但要弄清楚如何不破坏我的LightOpenID库。
答案 0 :(得分:2)
CodeIgniter在GoDaddy共享主机上非常成功
您可以使用GitHub上CI wiki上的CodeIgniter安装提示非常成功地设置它。
这些说明适用于GoDaddy共享托管。共享托管意味着该站点与多个其他GoDaddy客户共享单个Web服务器实例,并且Web服务器使用URI域名将人员路由到特定,因为服务器实例的IP地址不明确。如果您拥有虚拟专用托管(VPS)和专用IP地址,则无需使用这些说明。但是,由于大多数人在GoDaddy托管上使用CodeIgniter的问题与共享托管如何工作引起的问题有关,这应该是有用的。
人们有时会遇到的另一个问题是他们正在使用他们的GoDaddy共享主机帐户作为"沙盒"用于测试各种技术。我这样做,因此在将CodeIgniter实例放在何处以及将您使用的其他技术放在哪里与CodeIgniter相关时还需要考虑其他因素。我还有WordPress,Drupal和Joomla实例,用于在我的单个托管空间中测试它们的各个方面。它们在CodeIgniter旁边工作得很好。
如果您的CodeIgniter实例位于服务器上的共享主机帐户空间的子目录而不是根目录中,则可以使用,并且必须在设置中进行调整。
有两个设置需要调整CodeIgniter才能在GoDaddy上运行。第一个是在CodeIgniter的config.php文件中,第二个是在包含CodeIgniter实例的根文件夹中的.htaccess文件中。
在CodeIgniter应用程序/ config / config.php中找到CodeIgniter config.php
$config['base_url'] = '';
$config['index_page'] = 'index.php?';
$config['uri_protocol'] = 'QUERY_STRING';
包含CodeIgniter
的根文件夹中的.htaccess文件首先,考虑CodeIgniter位于共享主机帐户的文档根目录中的简单情况。以下是与上述设置一起使用的基本.htaccess文件内容。
行必须具有UNIX样式的行尾字符(即仅限lf字符)。您不能使用将cr / lf放在行尾的编辑器(例如Windows记事本),或者您必须有一种方法只在上传之前或期间将它们更改为lf。
当您将文件FTP到服务器时,FTP客户端不得将行尾字符变为除lf之外的任何其他字符。如果您使用和FTP客户端可以修改从Windows样式(即cr / lf)到UNIX样式(即lf)的行尾字符作为传输的一部分,您可以修复上传中的cr / lf问题服务器。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
您的共享主机帐户的文件夹/文件现在应类似于:
...
html/application
html/system
html/user_guide
...
html/.htaccess
...
其中html是您的共享主机帐户的文档根文件夹。
.htaccess中的第一行确保重写。
使用带有URL /控制器/方法/参数类型结构的URI引用CodeIgniter中的资源。接下来的两行将重写规则应用于仅实际不存在的文件和目录。
如果要引用的不是CodeIgniter控制器,而是CodeIgniter之外的某个实际目录和/或文件名,则必须关闭它们的重写。 CodeIgniter用户指南就是CodeIgniter,它位于CodeIgniter应用程序之外,通常位于与CodeIgniter实例相同的根文件夹中,并默认为名为user_guide的文件夹。如果您希望能够在CodeIgniter外部的真实文件夹中引用用户指南,那么必须为其禁用重写规则。这适用于任何其他"真实" CodeIgniter外的文件夹。
出于安全原因,CodeIgniter文件夹结构中的真实文件夹/文件包含自己的.htaccess文件,以防止使用URI直接访问它们。您必须确保您创建并希望CodeIgniter使用的任何真实文件夹都以这种方式受到保护。查看其文件夹中任何CodeIgniter自己的.htaccess文件将向您展示如何执行此操作。包含以下单个语句:
Deny from all
要让CodeIgniter在GoDaddy共享主机上运行,我们并没有真正关闭使用index.php?来自CodeIgniter。相反,我们使用HTML查询字符串机制为CodeIgniter的控制器/方法/参数结构。最后一条规则确保index.php?插入到URI中,以便URI中的控制器/方法/参数结构成为CodeIgniter的index.php要处理的查询字符串。
如果CodeIgniter实例位于共享主机帐户的根文档目录和指向它的域名中,则所有这些都应该有用。
与其他技术共享文档根
如果您将CodeIgniter与其他技术(例如,Joomla,WordPress,Drupal等)一起放入您的共享主机文档根目录,只要其他技术包含在真正的文件夹/文件中,那么上述设置应该有效。 39;与CodeIgniter文件夹和文件冲突。
使用CodeIgniter实例的子目录
有时希望CodeIgniter不在您的共享主机帐户的根文档目录中,而是在子目录中。我这样做是为了让Drupal,WordPress和Joomla实例也在他们自己的子目录中保持在CodeIgniter文件夹结构中的混合。为此,.htaccess文件需要其他语句。例如,如果您希望CodeIgniter存在于您的共享主机帐户的文档根目录下名为code-igniter的目录中,则以下.htaccess文件将适用于CodeIgniter根目录的子文件夹。它不能放在共享主机帐户的文档根文件夹中,而是放在CodeIgniter的根目录中,在本例中,它是一个名为code-igniter的子文件夹:
RewriteEngine on
RewriteBase /code-igniter/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
此示例的目录结构类似于:
html/code-igniter/application
html/code-igniter/system
html/code-igniter/user_guide
...
html/code-igniter/.htaccess
其中html是共享主机帐户的文档根目录,code-igniter是CodeIgniter实例的根文件夹。
额外的RewriteBase行确保重写始终在作为CodeIgniter实例的根目录的目录中工作。后续行仍然确保重写不适用于我的文档根目录中的实际文件夹/文件以用于其他技术。我希望这可以让CodeIgniter在两种不同的场景中使用GoDaddy共享主机。
如果CodeIgniter实例位于从属于多个子目录的位置,则相同的解决方案也可以无需更改。例如,假设共享主机帐户文档根目录是html目录,并且CodeIgniter实例从属于my-application目录下的代码点火器目录:
html/my-application/code-igniter/application
html/my-application/code-igniter/system
html/my-application/code-igniter/user_guide
如果您希望使用一个实例进行开发,IDE会自动将更改推送到文件保存上的开发实例,并将另一个实例放在不同的子目录中,以便进行集成测试和生产的部署,这种安排非常有用。 .htaccess和config.php文件无需修改即可使用。
答案 1 :(得分:0)
Dagon,如果您不了解有关服务和您正在使用的技术行为的详细信息,请不要说任何服务。
请按照以下步骤操作,而不是按照https://github.com/EllisLab/CodeIgniter/wiki/Godaddy-Installation-Tips上的步骤操作:
转到您的godaddy帐户文件管理器 - > WebRoot目录 - >如果它不存在则创建php5.ini并放置以下行:cgi.fix_pathinfo = 1
现在您需要重新启动Web Process:
登录您的客户经理。 单击“虚拟主机”。 在要使用的主机帐户旁边,单击“启动”。 在Stats&监视器部分,单击“系统进程”。 在左侧列表中,单击要查看的进程,或单击“所有进程”以一次查看所有进程。 要结束进程,请单击工具栏上的相应结束按钮。
现在您可以使用URI_PROTOCOL作为自动。
答案 2 :(得分:0)
你仍然可以跳过index.php吗?在$ config ['index_page']。
您需要将$ conifg ['base_url']修改为您的codeingniter安装目录 比如$ conifg ['base_url'] ='http://www.randomsite.com/module/';
这对我很有用。现在网站正确路由,没有'index.php?'
另外,请按照codeigniter的github存储库
上面的链接进行操作