Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 如何重写大量URL';马上就来?_.htaccess_Mod Rewrite - Fatal编程技术网

.htaccess 如何重写大量URL';马上就来?

.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/

我有一系列来自不同制造商的价格表(从数据库中吐出)。它们限制为每页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/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中。另一个是可选的,因为?所以在最后你可以查找页面或页面/或什么都没有