2017-01-23 87 views
1

我搜索了答案,沒有找到任何適合我的工具。 我有表'文章',我用'slug'列存儲文章。Laravel URL from comain.com/category/slug to domain.com/category

在我的路線文件,我有路線:

路線::獲得( '文/ {}塞', 'ArticleController @ viewArticle');

當我鍵入例如/ article/some-article-title和文章將顯示,但我想從/ some-article-title訪問時,它工作正常。我嘗試改變路線,例如:

Route :: get('{slug}','ArticleController @ viewArticle');

而且,當我把它放在文件末尾時,但畢竟所見即所得現在可以工作(上傳文件),並且一些圖像停止工作(404錯誤)。我嘗試了modyfing .htaccess文件,但仍然無法正常工作。

任何想法?

我想這樣

<a href="http://www.domain.com/some-title-for-article">some-title-for-article</a> 

創建錨,但現在的鏈接看起來是這樣的:

<a href="http://www.domain.com/articles/some-title-for-article">some-title-for-article</a> 

routes文件web.php

Route::get('/', '[email protected]'); 

/* DEPLOY BITBUCKET */ 
Route::get('/deploy/', '[email protected]'); 
Route::post('/deploy/update', 
    ['as' => 'deploy_update', 'uses' => '[email protected]']); 

/* ADMIN PANEL */ 

Auth::routes(); 
Route::get('/admin/', '[email protected]'); 

/* ADMIN USERS */ 
Route::get('/admin/users', '[email protected]'); 
Route::get('/admin/users/add/', '[email protected]'); 
Route::post('/admin/users/create/', '[email protected]'); 
Route::get('/admin/users/edit/{id}', '[email protected]'); 
Route::post('/admin/users/update/', '[email protected]'); 
Route::delete('/admin/users/delete/{id}', '[email protected]'); 

/* ADMIN CATEGORIES */ 
Route::get('/admin/categories', '[email protected]'); 
Route::get('/admin/categories/add/', '[email protected]'); 
Route::post('/admin/categories/create/', '[email protected]'); 
Route::get('/admin/categories/edit/{id}', '[email protected]'); 
Route::post('/admin/categories/update/', '[email protected]'); 
Route::delete('/admin/categories/delete/{id}', '[email protected]'); 

/* ADMIN COMMENTS */ 
Route::get('/admin/comments', '[email protected]'); 
Route::get('/admin/comments/view/{id}', '[email protected]'); 
Route::get('/admin/comments/add/', '[email protected]'); 
Route::post('/admin/comments/create/', '[email protected]'); 
Route::post('/admin/comments/approve/{id}', '[email protected]'); 
Route::delete('/admin/comments/delete/{id}', '[email protected]'); 

/* ADMIN ARTICLES */ 
Route::get('/admin/articles', '[email protected]'); 
Route::get('/admin/articles/view/{id}', '[email protected]'); 
Route::get('/admin/articles/edit/{id}', '[email protected]'); 
Route::get('/admin/articles/add/', '[email protected]'); 
Route::post('/admin/articles/create/', '[email protected]'); 
Route::post('/admin/articles/approve/{id}', '[email protected]'); 
Route::delete('/admin/articles/delete/{id}', '[email protected]'); 
Route::post('/admin/articles/update/', '[email protected]'); 

Route::post('image-upload','[email protected]'); 

/* GALLERIES */ 

Route::get('/admin/galleries', '[email protected]'); 
Route::get('/admin/galleries/view/{id}', '[email protected]'); 
Route::get('/admin/galleries/edit/{id}', '[email protected]'); 
Route::get('/admin/galleries/add/', '[email protected]'); 
Route::post('/admin/galleries/create/', '[email protected]'); 
Route::post('/admin/galleries/approve/{id}', '[email protected]'); 
Route::delete('/admin/galleries/delete/{id}', 'Ga[email protected]'); 
Route::post('/admin/galleries/update/', '[email protected]'); 

/* IMAGE CONTROLLER */ 
Route::delete('/admin/images/delete/{id}', '[email protected]'); 
Route::get('/admin/images/info/{id}', '[email protected]'); 
Route::post('/admin/images/update/', '[email protected]'); 

/* CONTACT FORM */ 
Route::get('/kontakt/', '[email protected]'); 
Route::post('/kontakt/', 
    ['as' => 'contact_send', 'uses' => '[email protected]']); 

/* GALLERY UPLOAD */ 
Route::post('/gallery_upload/', '[email protected]'); 

/* ARTICLE CONTROLLER */ 
Route::get('{slug}', '[email protected]')->name('view.article'); 
//Route::get('artykuly/{slug}', '[email protected]'); 
+0

Post your整個路線文件請。你可能會壓倒一些路線。 – devk

回答

0

請您可以嘗試在你的路由中添加一個名稱,並用路由名稱調用它?

像這樣:

Route::get('{slug}', '[email protected]')->name('view.article');

和刀片文件創建錨:

<a href="route('view.article')"

+0

感謝您的回答,仍然是同樣的問題。我有意見的結構是這樣的: /視圖 - 管理 - 文章 - 佈局 ...等 我想在我的意見/佈局/ master.blade.php添加此比如和我說:

  • Example article 123
  • 並且工作正常,並且它顯示了我的views/article/index.blade.php文章內容,但是現在圖像沒有加載,而且我的管理面板中的wysiwyg編輯器和文件上傳不起作用。 –

    +0

    你能否檢查你的控制檯是否有錯誤?如果某些東西沒有加載,那麼一定會有一些錯誤,你能檢查一下laravel日誌嗎? –

    +0

    問題不在於錨路線本身不顯示。問題是 - 如何創建搜索引擎友好的鏈接,將工作(不錨定URL ::到()等)。我想創建所有鏈接(對於畫廊,帖子,文章等),例如http://cdn3.wpbeginner.com/wp-content/uploads/2016/01/settingspermalink.png在「帖子名稱」示例中。正如你所知道的那樣 - 當你在路由文件的末尾添加一些像這樣的Route :: get('{slug}','ArticleController @ viewArticle');你可以從字面上匹配所有。所有系統工作正常,但我必須創建所有鏈接搜索引擎友好不喜歡/畫廊/一些標題等 –

    0

    既然你不使用航線名稱,只是用url()幫手:

    {{ url('some-title-for-article') }} 
    
    +0

    謝謝,我用它來創建鏈接。但是由於路由或htaccess未配置爲處理該類型的URL,因此單擊它時會出現錯誤 –

    +0

    這與URL構建無關,這是Web服務器問題。您需要爲Web服務器使用正確的配置。例如,你可以從[本教程](https://www.howtoforge.com/tutorial/install-laravel-on-ubuntu-for-apache/)中嘗試配置。 –

    +0

    謝謝。我在服務器中使用artisan構建,並從命令(php artisan serve)運行應用程序,並且我使用官方文檔從composer安裝了它。一切都很好,我只是想要像WordPress這樣的URL,SEO友好,可以在路線上做到這一點,或者最好在htaccess中做到這一點? –