Я работаю над новым сайтом, который должен заменить старый. Новый веб-сайт будет использовать Phalcon, и он использует собственную систему маршрутизации. Новый сайт будет доступен с использованием www.mydomain.com
, как и предыдущий. Новый сайт DocumentRoot - /var/www/mydomain-www
, а старый - /var/www/mydomain-platform
.Перепишите на другой корень документа
В этой «платформе» есть несколько «веб-сервисов», которые используют многие другие приложения (включая iOS и приложения для Android). К сожалению, новый веб-сайт также должен использовать эти веб-службы. :-(
В общем, есть файл PHP для каждого вызова API, и все эти файлы находятся в корне старого веб-сайта, а именно /var/www/mydomain-platform
. Я знаю, что это беспорядок, но я должен иметь дело с этим, я унаследовал . он в старом корне сайта есть также .htaccess
файл, который содержит переопределение маршрут для каждого вызова API, в правом файл PHP Они выглядят как:.
RewriteRule ^ws/event/games(.*)$ /ws_events.php$1
RewriteRule ^ws/favourites/list(.*)$ /ws_teams_favorites.php$1
мне нужно найти способ, чтобы переписать все url для www.mydomain.com/ws/(.*)
в каталог /var/www/mydomain-platform/ws
, потому что файлы веб-служб есть, и я действительно не хочу переместить их в корневую директорию нового веб-сайта.
Я думал создать символическую ссылку var/www/mydomain.www/ws
, указывая на каталог /var/www/mydomain-platform/ws
, но я уверен, что ниже конфигурация vhost не понравится, потому что она перенаправит все на /var/www/mydomain/public
.
Я хотел бы поместить эти перенаправления в файл .htaccess и оставить его таким, каким он есть.
Любая идея?
<VirtualHost *:80>
ServerName www.mydomain.com
ServerAdmin [email protected]
DocumentRoot "/var/www/mydomain-www"
ErrorLog "${APACHE_LOG_DIR}/www.mydomain.com-error_log"
CustomLog "${APACHE_LOG_DIR}/www.mydomain.com-access_log" common
AllowEncodedSlashes On
AddDefaultCharset UTF-8
<Directory /var/www/mydomain-www>
AuthType None
AllowOverride all
Require all granted
<IfModule rewrite_module>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule ((?s).*) public/$1 [B,NE,L]
</IfModule>
</Directory>
<Directory /var/www/mydomain-www/public>
<IfModule rewrite_module>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^((?s).*)$ index.php?_url=/$1 [B,NE,QSA,L]
</IfModule>
</Directory>
<FilesMatch "(?i)\.php$">
Require all denied
</FilesMatch>
<FilesMatch "index\.php$">
Require all granted
</FilesMatch>
</VirtualHost>
Собственно регулярное выражение не работает, но я закрепили?!? 'RewriteRule (^ (/ ws2/| WS3 /) . *) public/$ 1 [B, NE, L] '. Должна быть группа внешнего захвата, или URL не будет перенаправлен на 'public/$ 1'. А также флаги должны быть '[B, NE, L]'. – noun
ОК спасибо, я подтвердил свой ответ в соответствии с вашими комментариями. – anubhava