Frist of all... format your code in your post, e.g.
```
Route::get('{post_slug}', [App\Http\Controllers\Frontend\FrontendController::class, 'viewsPost']);
```
Second, can you show your entire web.php routes file?
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
I'm new to Laravel and I'm having trouble writing URLs.
How to open a page in a browser without a category? Now all pages are opened (/category/post), but how to do this (/post)? Here is how I wrote
web.php
Route::get('{post_slug}', [App\Http\Controllers\Frontend\FrontendController::class, 'viewsPost']); FrontendController.php
public function viewsPost(string $post_slug) { $post = Post::where('status','0')->get(); return view('frontend.post.views', compact('post')); } For some reason this doesn't work!
Frist of all... format your code in your post, e.g.
```
Route::get('{post_slug}', [App\Http\Controllers\Frontend\FrontendController::class, 'viewsPost']);
```
Second, can you show your entire web.php routes file?
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::get('/', [App\Http\Controllers\Frontend\FrontendController::class, 'index']);
Route::get('{service_slug}', [App\Http\Controllers\Frontend\FrontendController::class, 'viewServicePost']);
Route::get('{service_slug}/{post_slug}', [App\Http\Controllers\Frontend\FrontendController::class, 'viewPost']);
Route::get('{service_slug}/{post_slug}', [App\Http\Controllers\Frontend\FrontendController::class, 'viewsPost']);
Here I write in more detail about the problem!
That doesn't work!
I have posts that are linked to a category (localhost/service/post) and they work!
And there are posts that are not attached, and here is the problem with them (localhost/post)
@viktor3177 how can your application differentiate these two routes?
Route::get('{service_slug}', [App\Http\Controllers\Frontend\FrontendController::class, 'viewServicePost']);
and
Route::get('{post_slug}', [App\Http\Controllers\Frontend\FrontendController::class, 'viewsPost']);
public function viewServicePost(string $service_slug)
{
$service = Service::where('slug',$service_slug)->where('status','0')->first();
if($service)
{
$post = Post::where('service_id', $service->id)->where('status','0')->get();
return view('frontend.post.service', compact('post', 'service'));
}
else{
return redirect('/');
}
}
public function viewsPost(string $service_slug, string $post_slug) {
$service = Service::where('slug',$service_slug)->where('status','0')->first();
if($service)
{
$post = Post::where('service_id', $service->id)->where('slug', $post_slug)->where('status','0')->first();
return view('frontend.post.views', compact('post'));
}
else{
return redirect('/');
}
}
@viktor3177 the point I was making is how can your application know to select one of those actions over the other (TLDR: it cannot). You will need to find a URL scheme to differentiate the two actions.
Here is the whole file web.php
Auth::routes();
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::get('/', [App\Http\Controllers\Frontend\FrontendController::class, 'index']);
Route::get('{service_slug}', [App\Http\Controllers\Frontend\FrontendController::class, 'viewServicePost']);
Route::get('{service_slug}/{post_slug}', [App\Http\Controllers\Frontend\FrontendController::class, 'viewPost']);
Route::get('{post_slug}', [App\Http\Controllers\Frontend\FrontendController::class, 'viewsPost']);
Route::prefix('admin')->middleware(['auth', 'isAdmin'])->group(function () {
Route::get('/dashboard', [App\Http\Controllers\Admin\DashboardController::class, 'index']);
Route::get('service', [App\Http\Controllers\Admin\ServiceController::class, 'index']);
Route::get('add-service', [App\Http\Controllers\Admin\ServiceController::class, 'create']);
Route::post('add-service', [App\Http\Controllers\Admin\ServiceController::class, 'store']);
Route::get('edit-service/{service_id}', [App\Http\Controllers\Admin\ServiceController::class, 'edit']);
Route::put('update-service/{service_id}', [App\Http\Controllers\Admin\ServiceController::class, 'update']);
//Route::get('delete-service/{service_id}', [App\Http\Controllers\Admin\ServiceController::class, 'destroy']);
Route::post('delete-service', [App\Http\Controllers\Admin\ServiceController::class, 'destroy']);
Route::get('posts', [App\Http\Controllers\Admin\PostController::class, 'index']);
Route::get('add-post', [App\Http\Controllers\Admin\PostController::class, 'create']);
Route::post('add-post', [App\Http\Controllers\Admin\PostController::class, 'store']);
Route::get('post/{post_id}', [App\Http\Controllers\Admin\PostController::class, 'edit']);
Route::put('update-post/{post_id}', [App\Http\Controllers\Admin\PostController::class, 'update']);
Route::get('delete-post/{post_id}', [App\Http\Controllers\Admin\PostController::class, 'destroy']);
Route::get('users', [App\Http\Controllers\Admin\UserController::class, 'index']);
Route::get('users/{user_id}', [App\Http\Controllers\Admin\UserController::class, 'edit']);
Route::put('update-user/{user_id}', [App\Http\Controllers\Admin\UserController::class, 'update']);
});
and file FrontendController.php
{
public function index() {
$post = Post::where('status','0')->get();
return view('frontend.index', compact('post'));
}
public function viewServicePost(string $service_slug)
{
$service = Service::where('slug',$service_slug)->where('status','0')->first();
if($service)
{
$post = Post::where('service_id', $service->id)->where('status','0')->get();
return view('frontend.post.service', compact('post', 'service'));
}
else{
return redirect('/');
}
}
public function viewPost(string $service_slug, string $post_slug) {
$service = Service::where('slug',$service_slug)->where('status','0')->first();
if($service)
{
$post = Post::where('service_id', $service->id)->where('slug', $post_slug)->where('status','0')->first();
$latest_posts = Post::where('service_id', $service->id)->where('status','0')->orderBy('created_at', 'DESC')->get()->random(3);
return view('frontend.post.view', compact('post', 'latest_posts'));
}
else{
return redirect('/');
}
}
public function viewsPost(string $service_slug, string $post_slug) {
$service = Service::where('slug',$service_slug)->where('status','0')->first();
if($service)
{
$post = Post::where('service_id', $service->id)->where('slug', $post_slug)->where('status','0')->first();
return view('frontend.post.views', compact('post'));
}
else{
return redirect('/');
}
}
}
Please or to participate in this conversation.