ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php – 处理.htaccess重定向与不同的参数?

2019-08-24 08:28:12  阅读:238  来源: 互联网

标签:htaccess url-redirection php apache redirect


我想将不进入目录的URL重定向到一个脚本(例如script1.php),以及具有另一个脚本(script2.php)类别的URL.基本上我想做这样的事情:
http://www.test.com/user1 – > http://www.test.com/script1.php?username=user1其中script1.php获取用户名并为该用户显示适当的页面.我有这个部分使用此代码:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$script1.php?username=$1 [L,QSA]

现在的问题是我还希望有描述性的产品网址,以便例如http://www.test.com/clothes/jackets/cool-red-jacket-25重定向到http://www.test.com/items.php?category=clothes&subcategory=jackets&id=25.我有一些代码也适用于此:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([a-zA-Z-]+)/([a-zA-Z-]+)/.*-A([0-9-.]+)\.php$
script2.php?category=$1&subcategory=$2&id=$3 [L]

我遇到的问题是组合这两种类型的重定向.第一个重定向始终重定向到自己的页面,第二个重定向永远不会到达.是否有可能将这两种方式结合起来?基本上我需要像htaccess这样的东西,如果可能的话

if(!urlHasDirectories) {
    redirect to script1.php?username=$username;
} else {
    redirect to script2.php?category=$category&subcategory=subcategory&id=$id;
}

解决方法:

让我们来看看基本的正则表达式,我们将使用Regex101.的.是任何字符,*是前一个字符/分组的量词零次或多次.所以你的第一个正则表达式,RewriteRule ^(.*)$script1.php?username = $1 [L,QSA]表示重写任何以任何东西开头的东西,并以scripts1.php结尾.那不是你想要的.

演示:https://regex101.com/r/hK0xY3/1

使用正则表达式最好尽可能具体.

我会为用户制定规则:

RewriteRule ^(user\d+)$script1.php?username=$1 [L,QSA]

演示:https://regex101.com/r/hK0xY3/4

这是另一个量词,意思是一个或多个,所以如果不需要数字,你可以将其改为*.

你说你想要一个正则表达式来查找路径中是否有/.我认为最好告诉正则表达式要看什么,但这是可能的:

^.+?\/

演示:https://regex101.com/r/hK0xY3/3

使用这种方法,虽然任何目录请求将被重定向…

标签:htaccess,url-redirection,php,apache,redirect
来源: https://codeday.me/bug/20190824/1706367.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有