Laravel 5.4 中的 301 重定向问题
Issue in 301 Redirect in Laravel 5.4
我将类别页面的路径从 /listing/category1
更新为 /products/category1
旧路线:
Route::get('/listing/{slug}', 'ProductsController@listing');
新路线:
Route::get('/products/{slug}', 'ProductsController@listing');
现在我想永久重定向 (301) 我的 Old Routes
到 New Routes
。
只有 4-5 个类别,所以我在 public 文件夹的 .htaccess
文件中添加了以下代码,以将所有旧的 URL 重定向到新的 URL是手动使用 Redirect 301
脚本,但没有用。
Redirect 301 /listing/category1 https://www.example.com/products/category1
Redirect 301 /listing/category2 https://www.example.com/products/category2
请注意网站有 SSL certificate
,因此链接以 https
开头。
在 Stack Overflow 或其他一些我找不到的网站上可能有解决方案。
我也尝试在 .htaccess 文件中添加以下代码,但没有用。
RewriteRule listing/category1 /products/category1 [R=301,L]
RewriteRule ^listing/([a-zA-Z0-9_-]+)$ products/category1
.htaccess文件的完整代码如下:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteRule ^/?listing/([\w-]+)/?$ /products/ [L,NC,NE,R=301]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ / [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
所以请帮我告诉我如何在Laravel 5.4中将旧路由永久重定向到新路由?
提前致谢!
这应该有效,
Route::any('listing/{any?}', function ($any = null) {
return Redirect::to('/products/'.$any, 301);
})->where('any', '.*');
我将类别页面的路径从 /listing/category1
更新为 /products/category1
旧路线:
Route::get('/listing/{slug}', 'ProductsController@listing');
新路线:
Route::get('/products/{slug}', 'ProductsController@listing');
现在我想永久重定向 (301) 我的 Old Routes
到 New Routes
。
只有 4-5 个类别,所以我在 public 文件夹的 .htaccess
文件中添加了以下代码,以将所有旧的 URL 重定向到新的 URL是手动使用 Redirect 301
脚本,但没有用。
Redirect 301 /listing/category1 https://www.example.com/products/category1
Redirect 301 /listing/category2 https://www.example.com/products/category2
请注意网站有 SSL certificate
,因此链接以 https
开头。
在 Stack Overflow 或其他一些我找不到的网站上可能有解决方案。
我也尝试在 .htaccess 文件中添加以下代码,但没有用。
RewriteRule listing/category1 /products/category1 [R=301,L]
RewriteRule ^listing/([a-zA-Z0-9_-]+)$ products/category1
.htaccess文件的完整代码如下:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteRule ^/?listing/([\w-]+)/?$ /products/ [L,NC,NE,R=301]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ / [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
所以请帮我告诉我如何在Laravel 5.4中将旧路由永久重定向到新路由?
提前致谢!
这应该有效,
Route::any('listing/{any?}', function ($any = null) {
return Redirect::to('/products/'.$any, 301);
})->where('any', '.*');