.htaccess重写使用get变量来替换文件名

时间:2016-08-19 11:06:36

标签: php asp.net .htaccess

这个对我来说有点棘手,我希望尽可能减少这个URL。理想情况下,我想更改此网址:

http://www.example.co.uk/profile/profile.asp?profile_id=1&top=1&abt=2&ft=3&school=Something%20School

为:

http://www.example.co.uk/something-school/

使用.htaccess文件。

这意味着我们将使用school get变量替换.asp文件名,删除/ profile /以及其他get变量。

这可能吗?如果是这样的话?如果没有,你可能会给我一个替代方案吗?

非常感谢任何帮助!

修改

用户Badhorsie为我编写了一条重写规则,可以进行精确转换。遗憾的是,网页无法加载,因为遗憾的是这些get变量是加载页面所必需的。

我猜测隐藏get变量是不可能的。在哪种情况下可以保留get变量但保持它们干净?看起来这个目录也是必要的吗?

或许类似于:www.example.co.uk/profile/something-school/1/1/2/3

我们可以摆脱学校变量,因为它不需要(只需要替换profile / profile.asp部分。

2 个答案:

答案 0 :(得分:0)

试试这个:

RewriteCond %{QUERY_STRING} (.+(?=&school))school=([\w%-]+)
RewriteRule ^profile/profile.asp /%2?%1 [L,NE,R=301]

答案 1 :(得分:0)

你试过这个RewriteRule吗?尝试在.htaccess文件中添加此代码。

RewriteRule   ^http://www.example.co.uk/profile/profile.asp?profile_id=1&top=1&abt=2&ft=3&school=Something%20School?$ http://www.example.co.uk/something-school/ [L]