2017-07-15 74 views
0

我嘗試做一些簡單的重定向,它看起來像簡單的重寫不工作

RewriteRule ^shop.php?arttyp=Indianerflöten$ /basiskategorie/indianerfloeten-high-spirits [R=301,L] 

,但我失去了一些東西,因爲不工作

我應該逃避的東西嗎?

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 

RewriteBase/

RewriteCond %{QUERY_STRING} ^(?:[^&]*&)*arttyp=Indianerflöten 
RewriteRule ^/?shop\.php$ /basiskategorie/indianerfloeten-high-spirits [R=301,L] 

# RewriteRule ^shop.php?arttyp=Indianerflöten /basiskategorie/indianerfloeten-high-spirits [R=301,L] 
# Redirect 301 /shop.php /produkte 
# Redirect permanent /shop.php?arttyp=Indianerflöten /basiskategorie/indianerfloeten-high-spirits 
# RewriteRule ^shop.php?arttyp=Indianerflöten$ /basiskategorie/indianerfloeten-high-spirits [R=301,NC,L] 
# RewriteRule ^shop.php?arttyp=Indianerflöten /basiskategorie/indianerfloeten-high-spirits [R=301,NC,L] 
# RewriteRule ^shop.php?arttyp=Instrumente\ für\ Klangtherapie$ /basiskategorie/monochorde [R=301,L] 
# Redirect permanent "shop.php?arttyp=Instrumente für Klangtherapie" /basiskategorie/monochorde 


RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 


</IfModule> 

回答

1

這可能是你在找什麼:

RewriteEngine on 
RewriteCond %{QUERY_STRING} ^(?:[^&]*&)*arttyp=Indianerflöten 
RewriteRule ^/?shop\.php$ /basiskategorie/indianerfloeten-high-spirits [R=301,L] 

我們嘗試不起作用,因爲它永遠不會匹配任何傳入的請求。原因在於RewriteRule指令與路徑組件與所提供的模式相匹配。查詢字符串組件不是其中的一部分。你需要使用RewriteCond。你想開始閱讀你使用的工具的文檔。如果Apache的重寫模塊的質量很好,並且附有很好的例子,那麼這些文檔就可以提供:http://httpd.apache.org/docs/current/mod/mod_rewrite.html

爲了使這個工作適用一些前提條件:需要安裝,加載和啓用重寫模塊。如果您想在動態配置文件中使用這些規則,那麼您還必須首先在http服務器主機配置中使用AllowOverride命令啓用它們的解釋。但在99%的情況下,最好將這些規則直接放在HTTP服務器(虛擬)主機配置中,而不是使用動態配置文件(.htaccess樣式文件)。這些文件出了名的錯誤,很難調試,他們真的放慢了服務器。只有當你無法控制主機配置(讀取:真正便宜的主機服務提供商)或者如果你有一個依賴編寫自己的重寫規則的應用程序(這是一個明顯的安全噩夢) )。

+0

我正在輸入答案。 –

+0

@AbhishekGurjar的確,看起來很簡單。所以我們一起創建了一個答案:-) – arkascha

+0

感謝您的反饋我只是嘗試,但仍然無法正常工作我將粘貼我的整個htaccess在這裏 – deroccha