我正在尝试在WordPress网站的子文件夹中安装Laravel应用程序。
这个想法是,当请求转到example.com/{anything}时,WordPress网站将作出响应,但如果请求是在example.com/get-started/* 上发出的,则Laravel网站将处理该请求。
我在网上找到了一些类似的问题,但没有一个对我有效。最近我试过的是this one from laracasts。
我的根htaccess文件是
# Block the include-only files.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_URI} !^/get-started [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
我的htaccess从'get-started'文件夹是
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
“get-started/public”文件夹中的htaccess是
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
当我打开example. com/get-started时,它显示了laravel的默认404页面,告诉我重定向正在工作,但laravel应用程序没有相应的路由。
我把我的web.php文件给你
Route::redirect('/', '/step/1')->name('home');
Route::match(['GET', 'POST'], '/1', [\App\Http\Controllers\HomeController::class, 'step1'])->name('1');
Route::match(['GET', 'POST'], '/2', [\App\Http\Controllers\HomeController::class, 'step2'])->name('2');
Route::match(['GET', 'POST'], '/3', [\App\Http\Controllers\HomeController::class, 'step3'])->name('3');
我使用的是Laravel的this preset。
1条答案
按热度按时间x6yk4ghg1#
我还没有设置这一点,但我认为2个选项。
1.在Laravel config中将公用文件夹的路径更改为/get-started/
1.就像wordpress在子目录中安装时捕获路径一样,您应该在相关RewriteCond(s)之前的get-started/public中向您的.htaccess中添加某个位置:
希望能成功。