.htaccess 如何重写大量URL';马上就来?
我有一系列来自不同制造商的价格表(从数据库中吐出)。它们限制为每页100行,即:.htaccess 如何重写大量URL';马上就来?,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我有一系列来自不同制造商的价格表(从数据库中吐出)。它们限制为每页100行,即: www.domain.com/products/price-lists/company1.php?page=2 www.domain.com/products/price-lists/company2.php?page=10 我想重写为: www.domain.com/products/price-lists/company1/page/2 www.domain.com/products/price-lists/
www.domain.com/products/price-lists/company1.php?page=2
www.domain.com/products/price-lists/company2.php?page=10
我想重写为:
www.domain.com/products/price-lists/company1/page/2
www.domain.com/products/price-lists/company2/page/10
我有:
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteRule ^products/price-lists/company1/page/([0-9]+)/?$ products/price-lists/company1.php?page=$1 [NC,L]
RewriteRule ^products/price-lists/company2/page/([0-9]+)/?$ products/price-lists/company2.php?page=$1 [NC,L]
首先,如果我尝试转到/products/price list/company1/page/2(如果我删除/page/,它会起作用),这会抛出一个404;其次,我想知道是否可以将它们组合成一个规则:
(company1|company2[0-9]+)/?
感谢您的帮助(这是我第一次尝试重写mod_!)试试这个:
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteRule ^products/price-lists/([a-z0-9_\-]+)(/page)?/?$ products/price-lists/$1.php?page=1 [NC,L]
RewriteRule ^products/price-lists/([a-z0-9_\-]+)/page/([0-9]+)/?$ products/price-lists/$1.php?page=$2 [NC,L]
第一条规则将检查是否有一个没有数字的页面,然后转到第1页。([a-z0-9\-]+)
将用于放置公司,因此如果您放置:
http://www.domain.com/products/price-lists/stackoverflow/page/2
/products/price list/stackoverflow.php
将使用$\u GET['page']=2打开问题是url的部分与php文件的文件名相同(没有.php
)。使用以下命令进行更正
选项-多视图
您的意思是您想要一条规则来处理完整URL的不同排列吗?@Oded-是。所以我不需要每个制造商都有一条重写规则谢谢。根据你的回答,我的结论是:RewriteRule^价目表/([a-z0-9-]+)/page/?$price list/$1.php?page=1[NC,L]RewriteRule^价目表/([a-z0-9-]+)/page/([0-9]+)/?$price list/$1.php?page=$2[NC,L]
你能解释一下:([a-z0-9-]+)(/page)
(我不明白,所以把它改成了你上面看到的,这似乎很有效,你欢迎。([a…])检查是否有字母、数字、下划线和破折号,这在$1中。另一个是可选的,因为?所以在最后你可以查找页面或页面/或什么都没有