我已经在mywebsite.com/Laravel/下创建了一个Laravel项目。当我转到mywebsitecom/Laravel/test时,一切都很好,但当我转到mysite.com/laravil/test时,我会被重定向到my website.com/test.
我的/laravel目录中有index.php和.htaccess文件。这是我的.htaccess文件:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteBase /laravel
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
我不知道RewriteBase
为什么不起作用。我试过/lavelv、/Lavelv/和laravelv;什么也没用。
我的routes.php文件
<?php
Route::get('/test/{name?}', 'MainController@index');
Route::group(['middleware' => ['web']], function () {
//
});
解决方案是更改
RewriteRule ^(.*)/$ /$1 [L,R=301]
至
RewriteRule ^(.*)/$ $1 [L,R=301]
在我的情况下,清除浏览器中的缓存:)。
这对我有效;删除所有路由中的所有尾部斜杠,同时强调REQUEST_URI以斜杠开头(至少在.htaccess文件中):
替换:
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
带有:
# Remove all trailing slashes
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /(.*)/$
RewriteRule ^ /%1 [R=301,L]
这将把mywebsite.com/laravel/test/重写为mywebsite.com/slaravel/test/,而不会重定向您mywebite.com/test
只是不要使用%{REQUEST_URI} (.*)/$
。因为在根目录REQUEST_URI等于/,前导斜杠,它会被误解为尾随斜杠。
来源:https://stackoverflow.com/a/27264788/2732184