Apache + Codeigniter + 新服务器 + 意外错误

Apache + Codeigniter + 新服务器 + 意外错误

好吧,情况是这样的:我以前在 bluehost 上托管我的 codeigniter 网站,当时我没有 root 访问权限,后来我把该网站移到了 rackspace。我没有更改任何 PHP 代码,但出现了一些意外行为。

意外行为:

http://mysite.com/robots.txt 新旧版本均已解析 robots 文件

http://mysite.com/robots.txt/ 旧的 bluehost 设置解析为我的 codeigniter 404 错误页面。rackspace 配置解析为:未找到该服务器上未找到所请求的 URL /robots.txt/。

**这个例子让我相信我的 mod 重写可能有问题或缺少重写。第一个通过 php 正确生成错误,而第二个场景似乎让服务器处理此错误。

这个问题的下一个例子更令人不安:'http://mysite.com/search/term/9x 1-1%2F2 白色/'

新网站带来以下结果:错误的请求您的浏览器发送了一个该服务器无法理解的请求。

旧网站导致:实际页面正在加载并且搜索词未编码。

我不得不假设这与以下事实有关:当我转到新服务器时,我从根级 htaccess 文件转到 httpd.conf 文件以及虚拟服务器 default 和 default-ssl。它们如下:

默认文件:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName mysite.com
DocumentRoot /var/www
<Directory />
    Options +FollowSymLinks
    AllowOverride None
</Directory>

<Directory /var/www>
    Options -Indexes +FollowSymLinks -MultiViews
    AllowOverride None
    Order allow,deny
    allow from all

    RewriteEngine On
    RewriteBase /

    # force no www. (also does the IP thing)
    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} !^mysite\.com [NC]
    RewriteRule ^(.*)$ http://mysite.com/$1 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L]

    # index.php remove any index.php parts
    RewriteCond %{THE_REQUEST} /index\.(php|html)
    RewriteRule (.*)index\.(php|html)(.*)$ /$1$3 [r=301,L]


RewriteCond $1 !^(index\.php|assets|robots\.txt|sitemap\.xml|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

Default-ssl 文件 基本与上面的默认文件相同,仅用于处理 ssl 端口

httpd.conf 文件 这只是来自 html5 样板的大量内容,如果需要的话我会发布它

旧的 htaccess 文件

<IfModule mod_rewrite.c>

# index.php remove any index.php parts
RewriteCond %{THE_REQUEST} /index\.(php|html)
RewriteRule (.*)index\.(php|html)(.*)$ /$1$3 [r=301,L]

RewriteCond $1 !^(index\.php|assets|robots\.txt|sitemap\.xml|favicon\.ico)
RewriteRule ^(.*)/$ /$1 [r=301,L]

RewriteCond $1 !^(index\.php|assets|robots\.txt|sitemap\.xml|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

这是负责将每个请求定向到 index.php 文件的重定向...我认为这是问题所在(可能与目录有关?也许与我的 apache 配置有关?

RewriteCond $1 !^(index.php|assets|robots.txt|sitemap.xml|favicon.ico)

重写规则 ^(.*)$ /index.php/$1 [L]

如能提供任何帮助我将非常感激!!

相关内容