我正在尝试在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]