htaccess中的Apache RewriteRule - 路由被破坏

Pmp*_*mpr 9 wordpress .htaccess url-rewriting symfony

我有一个简单的结构:

Root
|-- [app] (Symfony Application)
|    |-- [app]
|    |-- [bin]
|    |-- [src]
|    |-- [vendor]
|    |-- [web]
|         |-- .htaccess (Symfony htaccess)
|
|-- [wp-admin]
|-- [wp-content]
|-- [wp-include]
|-- .htaccess (Root htaccess)
Run Code Online (Sandbox Code Playgroud)

我需要以下映射:

http://example.com      ==> Wordpress 
http://example.com/app  ==> Symfony Application
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的:

root htaccess:

<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>
Run Code Online (Sandbox Code Playgroud)

Symfony htaccess:

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>
Run Code Online (Sandbox Code Playgroud)

问题:

问题是,Symfony路由未解决:

找不到"GET /"的路线

这有什么简单的解决方案吗?

Mic*_*ł G 1

此解决方案需要 ssh 访问权限。

放弃所有基于htaccess规则的解决方案。尝试使用符号链接代替 ln -s 命令

这里最好的想法是将每个项目放在域指向的单独文件夹 otuside 文件夹中(让我们将其命名为 public_html)

ROOT
|
-[Symfony]
-[WP]
-[public_html] (folder where your domain is pointing) 
Run Code Online (Sandbox Code Playgroud)

现在 - 删除 public_html - 添加到 wp 的符号链接(名称为 public html) - 包含 wp 创建到 symfony/web 的符号链接

ROOT
|
-[Symfony]
-[WP]
-- [app]  (symbolic link to symfony/web)
-[public_html] (symbolic link to WP ) 
Run Code Online (Sandbox Code Playgroud)

作为替代方案,我认为可能的是将请求从 symfony 重定向到 wp,然后将 wp 响应推送给用户(来自 symfony)。我看到了这样的解决方案(当您在遗留系统之上构建新应用程序时使用它)。但这比符号链接更有问题(您可以在这里看到这个想法https://www.enotogorsk.ru/en/2014/07/22/symfony-legacy-bridge/