CodeIgniter Route работает через монтирование CIFS, но не с локальными файлами

наша среда разработки на работе использует одну машину centos с apache / php, которая обслуживает разные виртуальные хосты как для смонтированных CIFS, так и для локальных каталогов. наше приложение построено с использованием CodeIgniter 2.0

Недавно мы внесли изменения в наши маршруты, которые работают нормально для виртуальных хостов, обслуживающих подключенные диски, но маршруты не могут быть разрешены для локальных файлов, в результате чего получилось 404.

$config['base_url'] = "http://production.host.com"; // the production value of $_SERVER['SERVER_NAME'] essentially

маршруты:

$route['companyone'] = 'sso/platformsso/requestgenericsso/companyone';
$route['companyone/(:any)'] = 'sso/ptlatformsso/requestgenericsso/companyone/$1';

это работает для следующего сценария:

<VirtualHost 192.168.1.1:80>
ServerAdmin [email protected]
DocumentRoot "/var/mnt/a"ServerName "a.tmbc.com"ErrorLog logs/a.error.log
Alias ssaml /var/simplesamlphp/www
</VirtualHost>
<Directory "/var/mnt/a">
Options  FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

Directory populated using CIFS mount: mount -t cifs //1.2.3.4/a /var/mnt/a -o rw,username=un,password=pwd,uid=48 --verbose1

но не работает для этого сценария:

<VirtualHost 192.168.1.1:80>
ServerAdmin [email protected]
DocumentRoot "/var/www/html/b"ServerName "b.host.com"ErrorLog logs/b.error.log
Alias ssaml /var/simplesamlphp/www
</VirtualHost>
<Directory "/var/www/html/b">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

Directory populated using SVN checkout: svn checkout file:///var/svn/repo/trunk /var/www/html/b

.Htaccess:

AddType text/x-component .htc

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# Restrict unused HTTP methods
RewriteCond %{REQUEST_METHOD} !^(GET|POST|HEAD)
RewriteRule .* - [R=405,L]

# Forces SSL
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#Removes access to the system folder by users.
RewriteCond %{REQUEST_URI} ^_sys.*
RewriteRule ^(.*)$ /index.php/$1 [L]

RewriteCond %{REQUEST_URI} ^_app.*
RewriteRule ^(.*)$ /index.php/$1 [L]

RewriteRule ^(.*).(pdf|exe|doc|mp4)$ /externaldownload/?fileLocation=$1.$2 [R,L]
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

есть идеи, почему это так?

0

Решение

Я думаю, что понимаю вашу проблему здесь. Проблема, кажется, на (:any) ваше правило маршрута.

$route['companyone/(:any)'] = 'sso/ptlatformsso/requestgenericsso/companyone/$1';

URL с companyone в качестве первого сегмента URL и что-либо для второго сегмента будет переназначен на sso/ptlatformsso/requestgenericsso/companyone/$1

Похоже, кодигнитор проходит $1 в качестве переменной для функции companyone Это означает, что вы на самом деле соответствуете любому маршруту, который вы вынуждены переписать.

Как насчет того, чтобы объединить их в правила маршрута и сделать

$route['(.*)'] = "sso/ptlatformsso/requestgenericsso/companyone/$1";

или есть только одно правило для маршрутов, таких как

$route['companyone/(:any)'] = 'sso/ptlatformsso/requestgenericsso/companyone/$1';
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]