2015-09-03 32 views
-2

/產品/布拉布拉是確定 /產品/送 「500內部錯誤」htaccess的500錯誤,如果空變量(PHP)

RewriteRule product/([0-9a-zA-Z]+) product.php?c=$1 [L] 

if ($_GET['c']){ 
.... 
} 
else{ 
    ?> 
    <script>document.location.href="<?=$racine;?>"</script> 
    <? 
} 
+2

檢查錯誤日誌 – madforstrength

+2

'([0-9A-ZA-Z] *)' – Deadooshka

+2

好了,'/產品/'不匹配'產品/( [0-9a-zA-Z] +)',所以**誰知道在那裏執行什麼代碼!?** – deceze

回答

1

試試這個

RewriteRule product/([0-9a-zA-Z]+) product.php?c=$1 [L] 
RewriteRule product/ product.php [L] 

if (isset($_GET['c'])){ 
.... 
} 
else{ 
    ?> 
    <script>document.location.href="<?=$racine;?>"</script> 
    <? 
} 
-2

我覺得這可能會幫助你。

重寫你的.htaccess

RewriteRule product/^$|([0-9a-zA-Z]+) product.php?c=$1 [L] 

^$ |([0-9A-ZA-Z] +)將檢查空字符串或者一個字符串。所以product/也將工作

+1

'^'是字符串的開始。我不認爲*字符串*的開頭會出現在字符串的中間。 'product/^ $'永遠不會匹配任何東西,只有'[0-9a-zA-Z] +'將永遠匹配*任何東西*! – deceze

+0

@deceze,^ $表示一個空字符串。所以我認爲'product /'或'product/blahblah'會重定向到相同的路徑。問題說'/ product /'給500內部服務器錯誤。通過更改正則表達式,所有組合都將導致product.php – Arun

+1

是的,正則表達式'^ $'匹配空字符串。但只有這是*整個*表達!該表達式表示「字符串的開頭緊接着字符串的結尾」。如果在表達式中還有其他內容,則不會再匹配。 – deceze