我的结构很简单:
Root
|-- [app] (Symfony Application)
| |-- [app]
| |-- [bin]
| |-- [src]
| |-- [vendor]
| |-- [web]
| |-- .htaccess (Symfony htaccess)
|
|-- [wp-admin]
|-- [wp-content]
|-- [wp-include]
|-- .htaccess (Root htaccess)
我需要以下映射:
http://example.com ==> Wordpress
http://example.com/app ==> Symfony Application
这就是我所拥有的:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^app(.*)$ app/web/$1 [L,QSA]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
DirectoryIndex app.php
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{HTTP:Authorization} .
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^app\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^ %{ENV:BASE}/app.php [L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /app.php/
</IfModule>
</IfModule>
问题是,Symfony路线未解决:
找不到“GET /”
的路线
这有什么简单的解决方案吗?
答案 0 :(得分:1)
此解决方案需要ssh访问。
根据htaccess规则放弃所有解决方案。尝试使用符号链接代替 ln -s命令
这里最好的想法是将每个项目放在您的域所指向的单独文件夹otuside文件夹中(让我们将其命名为public_html)
ROOT
|
-[Symfony]
-[WP]
-[public_html] (folder where your domain is pointing)
现在 - 删除public_html - 添加到wp的符号链接(带有公共html的名称) - 包括wp创建符号链接到symfony / web
ROOT
|
-[Symfony]
-[WP]
-- [app] (symbolic link to symfony/web)
-[public_html] (symbolic link to WP )
作为替代方案,我认为可能的是将请求从symfony重定向到wp,然后将wp响应推送到用户(来自symfony)。我看过这样的解决方案(当你在遗留系统之上构建新的应用程序时使用它)。但这比符号链接更有问题(你可以在这里看到这个想法https://www.enotogorsk.ru/en/2014/07/22/symfony-legacy-bridge/)