好吧这听起来像是stackoverflow上最糟糕的问题,但现在就是。
在offers
文件夹中,我有这些文件:
product.php
category.php
要显示产品,我输入domain.com/offers/product.php?id=1
和
以显示类别,我输入domain.com/offers/category.php?id=1
因为这个网址看起来很难看,所以我使用.htaccess重写了例如product.php
RewriteEngine On
RewriteRule ^([a-z0-9]+)?$ product.php?id=$1 [NC,L]
这给了我一个domain.com/offers/1
由于product.php
和category.php
位于同一文件夹中并且都获得了数字变量,因此意味着它无法正确执行。
所以可能的方法是为slug
设置一个category.php
,并为id
保留product.php
,然后为其编写一些代码。
我的问题是,这是唯一的方法吗?
更新
我没试过,但是如果我将product.php?pid=1
和另一个category.php?cid=1
作为一个怎么办?
答案 0 :(得分:2)
您需要在网址中区分它们。该方案将使URL成为:
example.com/offers/category/1
example.com/offers/product/99
完成途径:
RewriteEngine On
RewriteRule ^offers/(product|category)/([a-z0-9]+)?$ $1.php?id=$2 [NC,L,QSA]
第一个组(product|category)
捕获目标脚本,该脚本已转换为$1.php
。第二组被转换为相关的id。
您不必将它们显示为单独的目录/products, /categories
,但您必须有某种方法来区分它们。相反,您可以在ID号的开头放置p
或c
:
example.com/offers/c1
example.com/offers/p99
完成途径:
RewriteEngine On
RewriteRule ^offers/p([a-z0-9]+)?$ product.php?id=$1 [NC,L,QSA]
RewriteRule ^offers/c([a-z0-9]+)?$ category.php?id=$1 [NC,L,QSA]
或者你可以将它们扩展到
答案 1 :(得分:0)
您在显示的网址中需要一些差异。有点像...
RewriteRule ^([a-z0-9]+)$ product.php?id=$1
RewriteRule ^category/([a-z0-9]+)$ category.php?id=$1