2016-08-04 17 views
3

我發現任何laravel網站都可以通過index.php作爲參數訪問。index.php作爲laravel網站的url中的參數

這是一個很大的問題,index.php中的url參數會打斷所有圖像。 看看一個真實的例子就明白了我的意思:

http://www.cyprusalive.com/main-thing/sightseeing
http://www.cyprusalive.com/index.php/main-thing/sightseeing

的Googlebot閱讀一些網址的index.php作爲URL的參數。這有效地打破了所有圖片,當有人從谷歌搜索訪問該網站index.php。

此外,這是一個不好的SEO實踐,因爲產生重複的內容。

解決這個問題的最佳方法是什麼?

+1

這不是一個問題的.htaccess?我使用CodeIgniter(相同的機制)。當我在url中使用index.php訪問它時,所有鏈接都指向沒有index.html的URL,所有內容仍然在工作。我認爲你的配置可能有問題。我沒有Laravel的經驗或知識。 – Clemenz

+0

這是一個.htaccess問題 - 公平地說,似乎默認的.htaccess與laravel一起允許這個 – Chris

+0

我將在'robots.txt'中使用'Disallow:/ * index.php *'來解決這個問題。谷歌。有沒有更好的辦法? –

回答

2

問題可以通過nginx rewrite rules修復。使用波紋管規則重定向與index.php參數所有URL到original laravel route url

location /index.php { 
     rewrite ^/index.php(.*)$ http://$server_name$1; 
} 

而且我已經把後續的robots.txt

Disallow: /*index.php* 
1

您是否在您的webroot或公用文件夾中提供了Laravel提供的.htaccess文件?

如果沒有,嘗試把這個在.htaccess文件在您的公共目錄:

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
    </IfModule> 

    RewriteEngine On 

    # Redirect Trailing Slashes If Not A Folder... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)/$ /$1 [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 GitHub上採取了這種.htaccess

此外,您可能需要檢查是否爲您的web服務器啓用了重寫mod。

參考How to check whether mod_rewrite is enable on server?

+0

謝謝你的回答。我使用nginx作爲web服務器 –

0

你也可以做到這一點簡單......

1.Open的apache \的conf \ httpd.conf文件和搜索這個線

#LoadModule rewrite_module模塊/ mod_rewrite.so 2.然後刪除[#],並保存,然後重啓apache