繁体   English   中英

网址重写无效

[英]URL rewriting is not working

我想使用URL重写网站。我已经在服务器中放置了一个.htaccess文件并打开了重写模式,除了我遇到的一个问题外,它似乎可以正常工作。 我有两个php扩展文件,分别是category.php和products.php。

这是我的要求,当满足一个条件时应调用category.php,而满足另一条件时应调用products.php

.HTACCESS

RewriteRule ([A-Za-z-_]+) category.php?arg=name
RewriteRule ^([A-Za-z-_'']+)/([0-9]+) product.php?arg=name&pid=id

她是我的网站网址,用于类别页面

http://www.mysite.com/category1

对于产品页面

http://www.mysite.com/product-name/101

所以问题出在第二个URL重写条件,即产品页面URL。当我将URL放到浏览器中时,它转到404。而1个重写条件似乎可行。请帮助以上述格式访问网页。

您需要为正则表达式添加边界,并反向引用捕获的分组:

RewriteRule ^([A-Za-z-_]+)$ category.php?arg=$1 [L]
RewriteRule ^([A-Za-z-_'']+)/([0-9]+)$ product.php?arg=$1&pid=$2 [L]

问题是在正则表达式的字符类中,连字符应为或开始或结束,否则需要转义(否则将代表范围)。

我们的两个规则:

RewriteRule ([A-Za-z-_]+) category.php?arg=name
RewriteRule ^([A-Za-z-_'']+)/([0-9]+) product.php?arg=name&pid=id

没有使用正确的正则表达式 ,将产生错误的结果。

用以下代码替换您的规则:

RewriteRule ^([a-z_-]+)/?$ /category.php?arg=$1 [L,NC,QSA]
RewriteRule ^([a-z_'-]+)/([0-9]+)/?$ /product.php?arg=$1&pid=$2 [L,NC,QSA]

PS:我对该规则做了一些更正,以更好地处理意外情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM