WordPress Symfony Совместное проживание
У нас есть сайт, который работает на Symfony, и который был разработан людьми, намного более компетентными, чем я. Однако я достаточно компетентен в WordPress и буду устанавливать блог на сайте.
В настоящее время корень сайта работает на Symfony, но я бы хотел, чтобы WordPress вступил во владение, не касаясь ядра Symphony. По сути, я хотел бы установить WordPress в подкаталоге каталога www, скажем, www/wordpress/
и иметь htaccess указывать на этот каталог в качестве корня моего домена. НО, есть одна функция моей установки Symfony, к которой я хотел бы иметь доступ, давайте назовем ее myfeature
, Когда я иду в mydomain.com/myfeature/
Я хотел бы, чтобы htaccess указывал на mydomain.com/index.php/myfeature
которым управляет Симфония.
Вот как выглядит мой текущий файл.htaccess.
<IfModule mod_rewrite.c>
RewriteEngine On
# we skip all files with .something
RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_URI} !\.html$
RewriteCond %{REQUEST_URI} !\.php
#RewriteCond %{REQUEST_URI} !\.php
RewriteRule .* - [L]
# we check if the .html version is here (caching)
RewriteRule ^$ /index.html [QSA]
RewriteRule ^([^.]+)$ /$1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
# no, so we redirect to our front web controller
RewriteRule ^(.*)$ /index.php [QSA,L]
# hidden frontoffice controller
RewriteRule ^index\.php/(.*)$ /index.php [QSA,L]
# fo controllers
RewriteRule ^frontend\.php/(.*)$ /frontend.php [QSA,L]
RewriteRule ^frontend_dev\.php/(.*)$ /frontend_dev.php [QSA,L]
</IfModule>
Благодарю вас
2 ответа
Я интегрировал блог WordPress со своим сайтом Symfony, используя следующее.
//Added to the autoload.php
require('../vendor/wordpress/wp-blog-header.php');
Я устанавливаю блог в основную веб-папку, и.htaccess был установлен следующим образом:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/blog -------Add this condition to by pass the rewrite rules
RewriteRule ^(.*)$ app.php [QSA,L]
Это позволяет получить доступ ко всем другим маршрутам в обычном режиме, но маршруты блогов остаются нетронутыми и передаются непосредственно в wordpress. Чтобы извлечь данные из базы данных WordPress, я смог вызвать методы WordPress в моих контроллерах Symfony и передать их в шаблон веточки.
$posts = get_posts('numberposts=10&order=ASC&orderby=post_title');
return array('posts'=>$posts);
Я не уверен, что это именно то, о чем вы спрашиваете, но именно так сосуществуют мой блог WordPress и сайт Symfony 2.0. Это настоящая боль, хотя у меня есть шаблон WordPress и шаблон Symfony, который необходимо постоянно обновлять. Я действительно хотел бы придумать лучшее решение, чтобы объединить их в отличные инструменты.
Ну вот. Я не думаю, что что-нибудь ниже строки контроллера WordPress когда-либо будет достигнуто, но я все равно оставил это
<IfModule mod_rewrite.c>
RewriteEngine On
# we skip all files with .something
RewriteCond %{REQUEST_URI} ..+$
RewriteCond %{REQUEST_URI} !.html$
RewriteCond %{REQUEST_URI} !.php
#RewriteCond %{REQUEST_URI} !.php
RewriteRule .* - [L]
# we check if the .html version is here (caching). If yes, don't redirect
RewriteRule ^$ /index.html [QSA]
RewriteRule ^([^.]+)$ /$1.html [QSA]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* - [L]
# if the 'myfeature' prefix is there, redirect to Symfony controller
RewriteCond %{REQUEST_URI} ^/myfeature/
RewriteRule .* index.php [QSA,L]
# otherwise, redirect to wordpress controller
RewriteRule .* wordpress/index.php [QSA,L]
# hidden frontoffice controller
RewriteRule ^index.php/(.*)$ /index.php [QSA,L]
# fo controllers
RewriteRule ^frontend.php/(.*)$ /frontend.php [QSA,L]
RewriteRule ^frontend_dev.php/(.*)$ /frontend_dev.php [QSA,L]
</IfModule>