Mod重写与PHP和MySQL


Mod rewrite with PHP and MySQL

我正试图得到一个mod重写脚本的工作,但由于某种原因,我似乎不能让事情正常运作。我知道mod_rewrite正在工作,因为如果我运行以下测试,它会正确地重定向:

RewriteEngine on
RewriteRule ^oranges.html$ apples.html

然而,如果我尝试将所有查询推到索引文件或使用php处理的东西,那么它不工作:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .? index.php [L]

我想要实现的是有两个列的数据库表,一个有ID,另一个有重写的URL。我的意思是:

ID | URL
16 | nice-url-1
17 | nice-url-2

那么实际的URL是/index.php?id=16,但我希望有一个表查找,并有一个重定向到/nice-url-1。现在我想我会使用第二个重写条件,但问题是它只是不重定向。

我正在运行Centos 6与Apache 2.2.15,所以我想知道如果{REQUEST_FILENAME}只是不支持。我确实尝试过添加DOCUMENT_ROOT,但这完全没有区别。

任何帮助都非常感谢。

您想要在您的规则中添加另一个元素,以实际传递整个url QSA。这将把现有的查询字符串附加到url。

RewriteRule ^ index.php [L,QSA]

我通常也使用单个^来匹配任何可能的url