0

好吧,我已經與它打了幾個小時。我有3個不同的.htaccess腳本來完成我所需要的,但我無法將它們混合在一起。.htaccess漂亮的網址,不包括index.php和添加尾隨/到底

  1. 從做一個漂亮的URL(example.com/gallery.php - > example.com/gallery)

    Options +FollowSymLinks 
    RewriteEngine On 
    RewriteRule ^([a-zA-Z0-9]+)$ $1.php 
    
  2. 的腳本#1,雖然前鋒example.com/index.php到example.com/index,所以這段代碼刪除的index.php所以example.com/index.php - > example.com

    Options +FollowSymLinks -MultiViews 
    # Turn mod_rewrite on 
    RewriteEngine On 
    RewriteBase/
    
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?$1 [L,QSA] 
    
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index\.php [NC] 
    RewriteRule^/%1 [R=301,L] 
    
  3. 腳本應該加上一個斜線,這樣example.com/gallery - > example.com/gallery/

    # invoke rewrite engine 
    RewriteEngine On 
    RewriteBase /~new/ 
    
    # add trailing slash if missing 
    rewriteRule ^(([a-z0-9\-]+/)*[a-z0-9\-]+)$ $1/ [NC,R=301,L] 
    

有人能幫助我的3個腳本合併爲一個通用的漂亮網址腳本

回答

1

添加這些指令在您的網站的根目錄

Options +FollowSymLinks 
RewriteEngine On 

# add trailing slash 

RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L] 

# rewrite gallery/ to gallery.php 

RewriteCond %{REQUEST_URI} /$ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ $1.php [L] 

# redirect example.com/index.php to example.com/ 

RewriteCond %{REQUEST_URI} index\.php$ 
RewriteRule ^(.*)index\.php$ /$1/ [R=301,L] 
+0

感謝您爲.htaccess非常好,這工作正常,但它增加了另一個問題。它不會加載圖像和樣式,它會進入頁面,但沒有加載,它只顯示「空白圖片縮略圖」和HTML文本,我認爲這是因爲該頁面現在認爲圖像在example.com/中畫廊/圖片/雖然他們真的在example.com/images/,任何治療呢? – yodalr 2013-04-22 19:09:16

+0

你應該使用圖像和風格的絕對路徑 – 2013-04-22 19:33:26

+0

你的意思是像「example.com/images/image.jpg」而不是「images/image.jpg」,我在本地更新網站,所以它會造成一些問題。有什麼辦法呢? – yodalr 2013-04-22 19:47:06