2015-03-25 62 views
2

好吧,我使用自動生成器爲.htaccess文件中的prestashop站點生成自定義URL,但它不起作用。有任何想法嗎?我無法使用.htaccess重寫規則與我的Prestashop站點一起工作

原始URL是:

http://www.example.com/de/suche?controller=search&orderby=position&orderway=desc&search_query=mutter&submit_search=OK 

重寫的URL應該是:

http://www.example.com/search/position/desc/mutter/OK.html 

和重寫規則我在.htaccess文件是:

RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ /de/suche?controller=$1&orderby=$2&orderway=$3&search_query=$4&submit_search=$5 [L] 
+0

您的規則看起來不錯。定義「不工作」。重寫引擎是否啓用? .htaccess中的其他指令? – MrWhite 2015-03-25 12:48:59

+0

嘿,謝謝你,是的重寫引擎是,並且還有一堆其他指令(所有標準prestashop的東西) 我的意思是「不工作」是一個404找不到錯誤,而不是實際的重定向。 這個幫助嗎? – Cagrie 2015-03-25 18:37:53

+0

只是爲了澄清,這是一個_internal rewrite_,而不是_external redirect_,所以您實際上不會在地址欄中查看URL中的任何更改 - 是您期望的嗎?什麼是無法找到的網址?如果您想查看URL change_進行測試,可以通過添加「R」標誌將其更改爲臨時重定向。 – MrWhite 2015-03-25 21:39:11

回答

0

你應從您的規則中刪除[L]標誌。它阻止任何其他規則應用,但您需要將此新路由傳遞給Prestashop調度程序。

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    #Domain: test.example.com 
    RewriteRule . - [E=REWRITEBASE:/] 
    RewriteRule ^api$ api/ [L] 
    RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L] 
    # Images 
    RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L] 
    # [...] 

# You need to put your condition here without the [L] flag 
# And before the Dispatcher 
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ /de/suche?controller=$1&orderby=$2&orderway=$3&search_query=$4&submit_search=$5 
# Your URL is then rewritten to Prestashop standard format 
# and will be sent to the following Dispatcher. 

    # Dispatcher 
    RewriteCond %{REQUEST_FILENAME} -s [OR] 
    RewriteCond %{REQUEST_FILENAME} -l [OR] 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule ^.*$ - [NC,L] 
    RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L] 
</IfModule>