Laravel和Wordpress在同一服务器/域上

Nie*_*jer 12 apache wordpress mod-rewrite laravel

我正在尝试在Laravel(5.1)项目中托管一个WordPress站点.我有以下结构(剥离一些)

??? app
??? config
??? public
?   ??? index.php
?   ??? wordpress -> ../wordpress
?   ??? .htaccess
??? resources
??? storage
??? vendor
??? wordpress
    ??? index.php
    ??? wp-admin
    ??? wp-config.php
    ??? wp-includes
    ??? .htaccess
Run Code Online (Sandbox Code Playgroud)

vhost文档根目录是公共的.

Wordpress应该捕获掉落在.htaccess中的所有内容.但是例如/ login应该去laravel.当我的项目增长时,我打算添加更多规则来捕获Laravel的请求.我在/ public中有以下.htaccess文件:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule "^/login" "index.php" [L]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule "^(.*)$" "wordpress/$1" [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

但是当我向/ login发出请求时,我仍然最终得到了wordpress页面.这是日志的一部分:

 add path info postfix: /var/www/public/login -> /var/www/public/login/
 strip per-dir prefix: /var/www/public/login/ -> login/
 applying pattern '^/login' to uri 'login/'
 add path info postfix: /var/www/public/login -> /var/www/public/login/
 strip per-dir prefix: /var/www/public/login/ -> login/
 applying pattern '^(.*)$' to uri 'login/'
 RewriteCond: input='/var/www/public/login' pattern='!-d' => matched
 RewriteCond: input='/var/www/public/login' pattern='!-f' => matched
 rewrite 'login/' -> 'wordpress/login/'
 add per-dir prefix: wordpress/login/ -> /var/www/public/wordpress/login/
 strip document_root prefix: /var/www/public/wordpress/login/ -> /wordpress/login/
 internal redirect with /wordpress/login/ [INTERNAL REDIRECT]
Run Code Online (Sandbox Code Playgroud)

看起来重写不会停留在[L]旗帜上.

Nie*_*jer 5

结束了在ServerFault上问同样的问题.我得到了答案.将它链接在这里以供参考:

https://serverfault.com/questions/739728/laravel-and-wordpress-on-same-server-domain