編集: これは、コメントのフィードバックと、meta.stackoverflow に関する少しの読み物に基づいて、私の質問を大幅に編集したものです。
私は目標を変更しました。今は、Laravel と WP の間でトップレベルの URL をルーティングすることを優先しています。コード/データベース/ユーザーの資格情報などを共有することはもう求めていません。
質問: 次のような URL 構造を実現するには、どのような書き換え規則が必要ですか?
/ // (home) delivered by WP
/content1 // WP
/content(n) // WP
/dashboard // delivered by Laravel
/widgets/mywidget/ // Laravel
- すべての Laravel ページは /admin または /widgets にあり、404 を含め、それ以外はすべて WordPress によって処理されます。
- WP と Laravel を完全に分離します。
- 同僚と管理者アカウントを使用して WP を編集します。他の WP ユーザーはいません。
- 2 つのアプリのプレゼンテーションを完全に個別に管理します
ファイルを次のようにセットアップし、各アプリケーションが互いに独立して動作することをテストしました。(つまり、Laravel の書き換えルールのみが使用されている場合、Laravel は laravel-index.php を使用して正常に動作します)
Web ルートから: public_html/
/wordpress
/laravel3 // app dir
/css // these are from the laravel public dir
/images //
/js, etc //
/index.php // WP index.php
/laravel-index.php // laravel's index.php
httpd.conf にアクセスできない共有ホスティング環境にいます。
これが私の.htaccessです
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^widgets - [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# Laravel
<IfModule mod_rewrite.c>
RewriteRule !^widgets - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ laravel-index.php/$1 [L]
</IfModule>
この上:
- WordPress ページにアクセスでき、
- WP は未知の URL に対して WP-404 を提供しますが、
- /widgets はバニラ サーバー 404 を取得しますが、
- /laravel-index.php/widgets は適切なコンテンツを表示します。
追加の問題は、WP ダッシュボードが /dashboard へのリクエストを盗んでいることです。これを Laravel にリダイレクトしたいと考えています。
読んでくれてありがとう!