我有一个奇怪的问题,在哪里生成我正在使用我的URL的页面:
site / city / city-name / page-number
表示mod_rewrite是:
RewriteRule ^city/(.*)/(.*)$ tagcity.php?tag=$1&pnum=$2 [L]
但现在的问题是,如果我删除城市名称并将其设为空,如“site / city // page-number”,则会开始将page-number作为city-name。
也可以只有一次重写来提供带或不带页码的页面吗?
我知道这是一个奇怪的情况但不幸的是我的一些网站页面在Google中被编入索引。
如何检测到它是空的,以便我可以生成404页面?
答案 0 :(得分:0)
改为使用+
:
RewriteRule ^city/(.+)/(.*)$ tagcity.php?tag=$1&pnum=$2 [L,QSA]
*
表示" 0或更多重复",而+
表示" 1或更多重复"。因此,使用+
要求该字段至少包含某些内容。
此外,您可能需要设置[L,QSA]
,以便在原始网址中有任何其他查询参数时,它们将被保留。 (QSA =查询字符串追加)
根据评论中的要求,可以处理完全缺少页码的规则:
RewriteRule ^city/([^/]+)(?:/(.*))?$ tagcity.php?tag=$1&pnum=$2 [L,QSA]