2014-04-11 120 views
-1

我想了解通過在燈系統上使用htaccess的URL重寫方法。php和htaccess的網址重寫問題

我是我的網站管理員,我對系統(Ubuntu 12.04)有完整的訪問權限。

我成功地配置了htaccess來刪除www和index.php,所以它似乎工作正常。 問題來了,當我嘗試重寫經典URL像在這個例子中(千像這樣在網絡上):

RewriteEngine on 
RewriteRule ^products/([A-Za-z0-9-]+)/?$ results.php?products=$1 [NC] 

我想重寫

mysite/results.php?products=string 

mysite/string 

所以我認爲這是正確的例子。 無論如何,它不起作用。 我嘗試了幾個類似的例子,但我不明白爲什麼它根本不起作用。

我的.htaccess:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    # Removes index.php from ExpressionEngine URLs 
    RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC] 
    RewriteCond %{REQUEST_URI} !/system/.* [NC] 
    RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L] 

    # Directs all EE web requests through the site index file 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ /index.php/$1 [L] 

    # Always remove www (with a hard redirect) 
    RewriteCond %{HTTP_HOST} ^www\.mysite\.com$ [NC] 
    RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L] 

    # Try 
    RewriteCond %{QUERY_STRING} ^page=(\d+) 
    RewriteRule ^products/([A-Za-z0-9-]+)/?$ results.php?products=$1 [R=301,QSA,L,NC]   

    </IfModule> 

任何建議將不勝感激。

+1

'重寫規則^(。*)/index.php/$1 $ [L]' - 你們的這個規則,每一個服務器接收URL匹配和'[L]'表示在此之後它應該停止處理任何規則。這可能是你的重寫規則不起作用的原因。 –

回答

0

這應該在根的.htaccess工作:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([A-Za-z0-9-]+)/?$ results.php?products=$1 [L,QSA]