编辑: 这是我的问题的主要编辑,基于评论中的反馈,以及对 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 中,其他一切都将由 WordPress 处理,包括 404
- 我会让 WP 和 Laravel 完全分开。
- 我和我的同事将使用管理员帐户编辑 WP,不会有其他 WP 用户
- 我将完全分开管理这两个应用程序的演示文稿
我已经按如下方式设置了我的文件,并测试了每个应用程序彼此独立工作。(即,如果 Laravel 的重写规则是唯一使用的,Laravel 使用 laravel-index.php 可以正常工作)
来自网络根目录: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 正在窃取对 /dashboard 的请求,我想将其重定向到 Laravel
谢谢阅读!