Хорошо, вот ситуация: я использовал свой сайт codeigniter на bluehost, где у меня не было root-доступа, с тех пор я переместил этот сайт в rackspace. Я не менял код PHP, но возникло неожиданное поведение.
Неожиданное поведение:
http://mysite.com/robots.txt И старое, и новое разрешение файла robots
http://mysite.com/robots.txt/ Старая установка bluehost разрешает мою страницу ошибки codeigniter 404. Конфигурация стойки разрешает: не обнаружена Запрошенный URL /robots.txt/ не найден на этом сервере.
** Этот случай наводит меня на мысль, что может быть проблема с переписыванием моих модов или их отсутствием. Первый правильно выдает ошибку через php, в то время как кажется, что второй senario позволяет серверу обрабатывать эту ошибку.
Следующий пример этой проблемы вызывает еще большее беспокойство: 'http://mysite.com/search/term/9 x 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>
RewriteCond $ 1! ^ (Index.php | assets | robots.txt | sitemap.xml | favicon.ico)
RewriteRule ^ (. *) $ /Index.php/$1 [L]
Любая помощь будет очень признательна!