我遇到的问题是GoDaddy托管网站不是帐户"主要"现场。服务器上的站点路径是:webroot / FBM /
访问该网站时,www.mysite.com会打开位于webroot / FBM / index.php的默认文件(index.php)。
大量的研究帮助我发现我需要使用"选项-Multiviews"在我的.htaccess文件的第一行,以便任何RewriteRule可以工作(再次,只在GoDaddy托管"备用"站点)。
目前,我的.htaccess文件如下所示:
$route['products/display/(:any)/(:any)/(:any)'] = 'Products_controller/display/$2/$3/$4';
当我使用这个.htaccess文件时,
在此服务器上找不到请求的URL / FBM /奖励。
由于/ FBM不是URL的一部分,我不希望将其视为错误消息的一部分。
这是一个简单的用例,用于显示我所有GoDaddy托管的#34;备用"站点。其他问题通常要复杂得多,并且需要将对站点的所有调用重新路由到index.php。但是,对于这个特定的项目,我不需要解决这个问题,我觉得如果我能解决这个问题,答案就会出现在其他网站上。
顺便说一下,这个.htaccess文件在我的开发环境中失败了(没有重写到bonus.php,虽然可以直接通过URL获得bonus.php。)
URL重写和正则表达式的整个概念对我来说很陌生,通过google和stackoverflow上的类似问题阅读并没有帮助。我已经研究了这个问题好几个月了,我真的很感激任何帮助。
答案 0 :(得分:0)
我有一个解决方案,但我不太喜欢它。我添加了另一行来处理用户没有包含尾部斜杠的情况:
Options -Multiviews
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^bonus$ /bonus.php
RewriteRule ^bonus/(.*)$ /bonus.php?query=%1
当这条线也不起作用时,我已经解决了这个问题:
RewriteRule ^bonus/?(.*)$ /bonus.php?query=%1
我仍然对GoDaddy上的Apache对其他托管域的行为感到困惑。
仍然欢迎更好的答案。