2015-09-20 53 views
1

我有,除其他外,在.htaccess中的重寫規則在根目錄下:如何防止Apache在比賽結束後繼續評估重寫規則?

[1] AddDefaultCharset utf-8 
[2] SetEnv PHP_VER 5_4 

[3] RewriteEngine on 

[4] RewriteCond %{REQUEST_FILENAME} -d [OR] 
[5] RewriteCond %{REQUEST_FILENAME} -f 
[6] RewriteRule^- [L]  
    ... 
[7] RewriteRule ^\/de\/Artikel-Kategorie-([a-zA-Z,-_]+)\.html$ /art-cat.php?plng=de [L] 
[8] RewriteRule ^\/de\/Artikel-Alle-Kategorien\.html$ /art-cat.php?plng=de [L,QSA] 
[9] RewriteRule ^\/en\/Articles-([a-zA-Z,-_]+)\.html$ /art-cat.php?plng=en [L] 
[10] RewriteRule ^Articles-([a-zA-Z,-_]+)\.html$ art-cat.php?plng=fr [L] 

[11] RewriteRule ^\/de\/Artikel-([a-zA-Z,-_]+)\.html$ /art-item.php?plng=de&c=$1 [L,QSA] 
[12] RewriteRule ^\/en\/Article-([a-zA-Z,-_]+)\.html$ /art-item.php?plng=en&c=$1 [L] 
[13] RewriteRule ^Article-([a-zA-Z,-_]+)\.html$ art-item.php?plng=fr&c=$1 [L] 
    ... 

當請求的URL http://dev.domain.com/de/Artikel-Alle-Kategorien.html,是被應用的規則是一個符合[11]儘管第[8]行中的規則完全匹配。 結果是應該被稱爲關於腳本art-item.phpart-cat.php錯誤消息的列表:

Notice: Undefined index: code in /Applications/MAMP/htdocs/site/dev/art-item.php on line 23 

Notice: Undefined index: cat_id in /Applications/MAMP/htdocs/site/dev/art-item.php on line 24 

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax ... 

我已經通過一對夫婦的文章和這裏的其他問題就這個問題,但沒有我嘗試似乎工作閱讀。我懷疑問題在某種程度上與L標誌有關,但我找不到適用於我的案例的解決方案。

我在這裏有點茫然。有人可以請我指出正確的方向嗎?

+0

既然你已經編號在配置文件中所有的線,你可以參考那些在問題的文字,也?我在挑選「第二塊第一塊」的含義時遇到了困難。 – IMSoP

+0

你說得對,對不起:-)完成。 – Argoron

回答

0

你可以跳過文件和目錄首先是所有的規則:

AddDefaultCharset utf-8 
SetEnv PHP_VER 5_4 

RewriteEngine On 

# skip all files and directories from rewrite rules below 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L]  

RewriteRule ^de/Artikel-Alle-Kategorien\.html$ art-cat.php?plng=de [L,QSA,NC] 

RewriteRule ^de/Artikel-Kategorie-([a-z,_-]+)\.html$ art-cat.php?plng=de&c=$1 [L,QSA,NC] 

RewriteRule ^en/Articles?-([a-z,_-]+)\.html$ art-cat.php?plng=en&c=$1 [L] 

RewriteRule ^Articles?-([a-z,-_]+)\.html$ art-cat.php?plng=fr&c=$1 [L,QSA,NC] 
+0

我實施了您的建議,但它似乎沒有任何影響。你能解釋一下它背後的邏輯嗎? – Argoron

+0

剛剛添加了問題,以便您要求的元素都包含在內。在您的回覆中註釋註釋行 - 抱歉,我不擅長這一點,恐怕我不明白'跳過所有文件和目錄'的含義。 – Argoron

+0

我已將行號添加到htaccess摘錄中進行說明。應該應用的規則是在第8行中,而是應用在第11行。我認爲順序是正確的。重複連字符,好的,謝謝,我會糾正這一點。 – Argoron