htaccess中的Apache RewriteRule - 路由被破坏

时间:2018-01-13 15:16:35

标签: wordpress .htaccess symfony url-rewriting

我的结构很简单:

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

这就是我所拥有的:

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>

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>

问题:

问题是,Symfony路线未解决:

  

找不到“GET /”

的路线

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

1 个答案:

答案 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/

相关问题