两个URL的URL重写将无法正常工作

时间:2012-01-09 01:09:02

标签: apache .htaccess url-rewriting

我有以下需要重写的网址: product.php IATA =电视+?产品= 12345 至 产品/ - 电视/电视/索尼的Bravia / 12345

产品list.php的?IATA =电视 至 产品列表/电视/电视

我的htaccess文件中有以下重写规则:

RewriteRule [^/]+/([A-Za-z]+)/[^/]+/([0-9]+) product.php?iata=$1&product=$2 [L,QSA,NC]
RewriteRule [^/]+/([A-Za-z]+) product-list.php?iata=$1 [L,QSA,NC]

但它们无法正常工作。请任何人都可以帮忙。

另外,如果product-list.php也有两个查询变量怎么办?该规则是否会与product.php的规则冲突?

由于

2 个答案:

答案 0 :(得分:0)

将此代码放入.htaccess文件中:

Options +FollowSymLinks -MultiViews
RewriteEngine on

RewriteRule ^product-list/[^/]+/(.*)$ product-list.php?iata=$1 [L,QSA,NC]
RewriteRule ^product/[^/]+/([^/]+)/[^/]+/(.*)$ product.php?iata=$1&product=$2 [L,QSA,NC]

答案 1 :(得分:0)

试试这个:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^product/([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)$ product.php?iata=$2&product=$4 [QSA,NC,L]
RewriteRule ^product-list/([^/\.]+)/([^/\.]+)$ product-list.php?iata=$2 [QSA,NC,L]

告诉我它是否有效


两个提示:

如果您不在托管环境中(=如果它是您自己的服务器并且您可以修改虚拟主机,而不仅仅是.htaccess文件),请尝试使用RewriteLog指令:它帮助您追踪此类问题:

# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On

我最喜欢检查regexp的工具:

http://www.quanetic.com/Regex(别忘了选择ereg(POSIX)而不是preg(PCRE)!)