【发布时间】:2015-09-20 07:22:19
【问题描述】:
我在根目录的 .htaccess 文件中有以下重写规则:
[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.php 相关的错误消息列表,而应调用art-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 标志有关,但我找不到适用于我的案例的解决方案。
我在这里有点不知所措。有人可以指出我正确的方向吗?
【问题讨论】:
-
既然您已经对配置文件中的所有行进行了编号,您是否也可以在问题文本中引用这些行?我无法理解您所说的“第二个区块中的第一个”是什么意思。
-
你是对的,对不起 :-) 完成。
标签: php apache .htaccess url-rewriting