Php
Laravel 和 Wordpress 在同一伺服器/域上
我正在嘗試在 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
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>
但是當我向 /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]