我有一个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