之前在codeigniter 3.1.2中工作.htaccess在尝试prerender.io后无法正常工作

时间:2016-12-24 14:39:36

标签: php apache .htaccess codeigniter prerender

我在.htaccess文件中使用了以下配置:

<IfModule mod_rewrite.c>
  RewriteEngine On
  #RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^ index.php [QSA,L]
</IfModule>

工作正常,我一进入www.my-site.com就显示主页。

然后我尝试使用此链接中提供的.htaccess文件在codeigniter中实现prerender.io:https://gist.github.com/thoop/8072354。新的.htaccess文件如下:

<IfModule mod_headers.c>
  RequestHeader set X-Prerender-Token "MY_TOKEN"
</IfModule>

<IfModule mod_rewrite.c>
  RewriteEngine On
  <IfModule mod_proxy_http.c>
    RewriteCond %{HTTP_USER_AGENT} baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator [NC,OR]
    RewriteCond %{QUERY_STRING} _escaped_fragment_
    RewriteRule ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent|\.ttf|\.woff))(.*) http://service.prerender.io/http://www.my-site.com/$2 [P,L]
  </IfModule>
</IfModule>

我也在帖子下面尝试了@benceg的评论,但这也没有用:

RewriteRule ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent))(index\.php)?(.*) http://service.prerender.io/%{REQUEST_SCHEME}://%{HTTP_HOST}/$3 [P,L]

上面的.htaccess文件无法正常工作,更糟糕的是,当我将之前的(开头提到的那个)替换为完全正常工作的.htaccess文件时,它也无效。

当我进入www.my-site.com时,它向我显示“网站正在建设中”。

然后我尝试了www.my-site.com/mycontroller,令我惊讶的是,我的主页正在显示。这清楚地表明我的.htaccess文件(以前完全正常工作)现在“部分”工作了。

但是,当我尝试www.my-site.com时,它再次显示“网站正在建设中”。

我目前拥有的一些codeigniter配置:

$config['base_url'] = 'http://www.my-site.com/';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
$route['default_controller'] = 'mycontroller';

我正在使用Bluehost Shared Hosting服务,我知道它们支持mod-rewrite。

我不再需要prerender.io了。尝试新的(prerender.io版本).htaccess时我启用或禁用了什么?我能做些什么来让我完全工作?#34;之前的状态&#34;回来?

我试图在网上搜索类似的问题,但没有找到任何与我的问题有关的内容。

更新

我尝试在本地lampp服务器上使用第一个(以前正在运行的).htaccess文件,它正常工作,但它仍无法在Bluehost服务器上运行。

更新2:

我今天发现了一个有趣的发现。当我在Google上查看我的网站(地址:northernschoolofmusic.com.cp-in-13.webhostbox.net)时,页面正在正确呈现。但是当我在浏览器中访问上述链接时,我立即被重定向到http://northernschoolofmusic.com.cp-in-13.webhostbox.net/cgi-sys/defaultwebpage.cgi

2 个答案:

答案 0 :(得分:0)

使用此htaccess -

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

和配置设置应该是那样的

$config['base_url'] = 'http://www.my-site.com/';
$config['index_page'] = '';

请按照此方式工作......

答案 1 :(得分:0)

问题终于是互联网连接。 Internet提供商可能已错误地保存DNS并重定向到错误的缓存页面。 更改浏览器或连接提供商是解决方案!