Url重写独立的php脚本在CAKEPHP应用程序


Url rewriting of standalone php script in CAKEPHP application

我有一个CAKEPHP应用程序,它在webroot文件夹中的.htaccess中有以下重写规则。

<IfModule mod_rewrite.c> 
RewriteEngine On RewriteCond %{HTTP_HOST} !^domain.com$ [NC] 
RewriteRule ^(.*)$ domain.com/$1 [L,R=301] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule>

我以前从未使用过CakePHP,我是一个PHP初学者,并编写了一个独立的PHP脚本,我在一个名为"产品"的文件夹在webroot文件夹。这个文件夹中的索引页接受一个id,然后从数据库检索产品名称和描述。(有上百种产品)

: www.domain.com/products/index.php ? id = 1

我希望包含一个规则,其中URL应该看起来像:www.domain.com/products/the-flux-capacitor

请有人告诉我如何才能实现这一点,而不破坏任何CakePHP重写?

如果您使用下面的URL结构www.domain.com/products/the-flux-capacitor,您仍然需要一种方法将每个产品名称映射到它的id,它必须是唯一的,这将是一个更大的努力。

但是,如果您使用稍微修改过的URL结构www.domain.com/products/the-flux-capacitor/id(甚至Amazon也这样做),那么就容易多了,下面的.htaccess代码将为您完成重写

#existing rules...
RewriteRule ^(.*)$ domain.com/$1 [L,R=301] 
#Insert new rule to match products, assumes ID is numeric
RewriteRule ^products/[^/]+/([0-9]+) products/index.php?id=$1 [L,QSA,NC]
#existing rules ...
RewriteCond %{REQUEST_FILENAME} !-d