2015-12-23 13 views
6

Ho creato un progetto Laravel in mywebsite.com/laravel/. Quando vado a mywebsite.com/laravel/test, tutto è ok, ma quando vado a mywebsite.com/laravel/test/, sto reindirizzato mywebsite.com/test.Laravel 5 cattivo comportamento durante la rimozione della barra finale

ho il file index.php e .htaccess nel mio /laravel directory. Questo è il mio .htaccess di file:

<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] 

Non ho idea del perché RewriteBase non funziona. Ho provato /laravel, /laravel/ e laravel; niente ha funzionato.

Il mio file routes.php

<?php 
Route::get('/test/{name?}', '[email protected]'); 

Route::group(['middleware' => ['web']], function() { 
    // 
}); 
+1

Il codice funziona benissimo dal mio test in ogni modo. Tecnicamente, con il modo in cui hai scritto la regola, non dovresti nemmeno aver bisogno di RewriteBase perché la regola includerà l'intero URI e semplicemente toglierà l'ultimo /. – Devon

+0

L'ho provato su localhost e su server di hosting, in entrambi i casi mi ha reindirizzato su domain.com/test, non ho idea di cosa ci sia che non va. –

+0

@Wolen Per favore, condividi il tuo 'route.php' – smartrahat

risposta

5

La soluzione è cambiare

RewriteRule ^(.*)/$ /$1 [L,R=301] 

a

RewriteRule ^(.*)/$ $1 [L,R=301] 

E nel mio caso la cache del browser chiaro nella mia :).

1

Questo funziona per me; la rimozione di tutte le slash da tutte le vie pur sottolineando che REQUEST_URI inizia con una barra (almeno in file .htaccess):

Sostituire:

# Redirect Trailing Slashes If Not A Folder... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /$1 [L,R=301] 

Con:

# Remove all trailing slashes  
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} /(.*)/$ 
RewriteRule^/%1 [R=301,L] 

Questo riscriverà mywebsite.com/laravel/test/ a mywebsite.com/laravel/test/ senza reindirizzarti mywebsite.com/test

Proprio non usano%{REQUEST_URI} (.*)/$. Perché nella directory root REQUEST_URI è uguale a /, la barra iniziale, e sarebbe erroneamente interpretata come una barra finale.

FONTE:https://stackoverflow.com/a/27264788/2732184