服务器结构
.htaccess 文件提供了一种基于每个目录进行配置更改的方法。这意味着您只需将请求定向到具有如何最好地处理请求的规则的目录。因此,您将把 Laravel 和 WordPress 附带的 .htaccess 文件留在它们的目录中。只需为包含它们的父目录创建另一个。
以下假设public_html的完整路径为/var/www/public_html。
文件夹结构
/var/www/public_html/laravel
/var/www/public_html/wp
/var/www/public_html/.htaccess
# Limit Access To Laravel Public Folder
<Directory "/var/www/public_html/laravel">
Order Deny,allow
Deny from all
</Directory>
<Directory "/var/www/public_html/laravel/public">
Allow from all
</Directory>
# Rewrite Requests
<IfModule mod_rewrite.c>
RewriteEngine On
# Do Not Rewrite Directory And File Requests
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ $1 [L]
# Rewrite Laravel Routes
RewriteCond %{REQUEST_URI} api/licenseplate [OR]
RewriteCond %{REQUEST_URI} api/calendar [OR]
RewriteCond %{REQUEST_URI} admin/settings [OR]
RewriteCond %{REQUEST_URI} admin/appointments [OR]
RewriteCond %{REQUEST_URI} appointment [OR]
RewriteCond %{REQUEST_URI} auth/login
RewriteRule ^(.*)$ laravel/public/$1 [L]
# Rewrite To WordPress For Everything Else
RewriteRule ^(.*)$ wp/$1 [L]
</IfModule>
应用程序设置
Laravel 和 WordPress 都可以生成指向其资产(图像、CSS、JavaScript)的链接。
WordPress 可轻松安装到子目录,因此您只需更改 General Settings Screen 上的 WordPress 地址和站点地址。
Laravel 假设它被安装到顶层目录。 asset() helper 用于生成资产文件的路径。所以你需要用你自己的一个来覆盖默认函数。方法如下:
用这些内容创建app/helpers.php
/**
* Generate an asset path for the application
* with the installation sub-directory
* prepended to the path.
*
* @param string $path
* @param bool $secure
* @return string
*/
function asset($path, $secure = null)
{
$path = ltrim($path, '/');
$dir = basename(dirname(__DIR__)) . '/public';
$url = app('url')->asset($path, $secure);
return str_replace($path, $dir . '/' . $path, $url);
}
通过编辑composer.json将app/helpers.php添加到自动加载过程中
"autoload": {
//...
"files": [
"app/helpers.php"
]
},
如果您有命令行访问权限,请更新 PHP composer
composer dump-autoload