Laravel和WordPress在相同的服务器/域

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

├── app ├── config ├── public │  ├── index.php │  ├── wordpress -> ../wordpress │  └── .htaccess ├── resources ├── storage ├── vendor └── wordpress ├── index.php ├── wp-admin ├── wp-config.php ├── wp-includes   └── .htaccess 

虚拟文档根目录是公共的。

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> 

但是,当我提出请求/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] 

好像重写不停在[L]标志处。

正如你在日志中看到的,第一个条件不匹配:

 applying pattern '^/login' to uri 'login/' 

login/不以/

所以你需要改变你的规则

 RewriteRule "^login/" "index.php" [L]