为了账号安全,请及时绑定邮箱和手机立即绑定

将原始网址转换为友好网址

将原始网址转换为友好网址

将原始网址转换为友好网址在我的网站上有一个注册导师的链接。这个链接是这样的http://www.myweb.com/profiles/tutors/index.php?tutorCode=1285&tutorName=Robert%20Sakoo&city=Sidny所以我需要重写这样的链接:www.myweb.com/1285/Rober Sakoo任何人都可以告诉我是否可以将原始URL重写为我预期的URL?
查看完整描述

2 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

您似乎对URL和重写的工作方式感到困惑。该概念:“我需要重写this2this1 ”是指:

  1. 有人在地址栏中输入this2或点击this2链接。

  2. 服务器看到了对this2的请求

  3. 服务器都有一套规则来重写内部从请求this2this1

  4. this1被提供给浏览器

请注意,所有这一切中的重要概念是浏览器请求“this2”链接,并且服务器在内部将请求重写为“this1”。但这可能不是你想要的,因为那时你会把丑陋的URL和重写它们看成漂亮的URL,而不是那些看起来很友好的URL。

很多时候,特别是在这里,人们要求“我想将此URL更改为此URL”之类的内容,或者在有两步重定向过程时要求重写。这是第2步(你不要求的话)这需要this1浏览器重定向this2使URL地址栏更改为this2

  1. 有人在地址栏中输入this1或点击this1链接。

  2. 服务器看到this1的请求

  3. 服务器有一组规则可以将浏览器外部重定向this2

  4. 浏览器的地址栏现在说明了这个2

  5. 浏览器请求this2

  6. 服务器看到了对this2的请求

  7. 服务器都有一套规则来重写内部从请求this2this1

  8. this1被提供给浏览器

所以这整个迂回的卷积只是所以当浏览器尝试去this1,它就会被重定向到this2但实际上仍然被提供从内容this1

所以我认为这一定是你想要的。试着把它放在你的htaccess文件中:

RewriteEngine On# check if the actual request if for "this1"RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /profiles/tutors/index.php\?tutorCode=([0-9]+)&tutorName=([^&]+)&?([^\ ]+)# redirect to "this2"RewriteRule ^profiles/tutors/index\.php /%1/%2/?%3 [R=301,L,NE]# now rewrite "this2" back to "this1"RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^([0-9]+)/(.+)/$ /profiles/tutors/index.php?tutorCode=$1&tutorName=$2 [L,QSA]

请注意,该city参数永远不会在友好URL中进行编码,因此它将作为查询字符串的一部分保留。你可以改变它,以便友好的URL看起来像:/id/name/city/而不仅仅是/id/name/,修改应该是微不足道的。


查看完整回答
反对 回复 2019-08-14
?
冉冉说

TA贡献1877条经验 获得超1个赞

那可能就在附近:

RewriteEngine onRewriteRule ^([0-9]+)/(.+)$ /profiles/tutors/index.php?tutorCode=$1&tutorName=$2 [NC,QSA]

由于您没有指定如何处理它,我没有考虑您的city参数,因此添加QSA(查询字符串附加)到规则,因此GET中的参数仍然传递给脚本。


查看完整回答
反对 回复 2019-08-14
  • 2 回答
  • 0 关注
  • 482 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信