.htaccess – 将原始URL转换为友好URL

在我的网站上有一个注册导师的链接.这个链接是这样的

http://www.myweb.com/profiles/tutors/index.php?tutorCode=1285\u0026amp;tutorName=Robert Sakoo& city = Sidny

所以我需要重写这样的链接:

www.myweb.com/1285/Rober Sakoo

任何人都可以告诉我是否可以将原始URL重写为我预期的URL?

最佳答案
您似乎对URL和重写的工作方式感到困惑. “我需要将this2重写为this1”这一概念意味着:

>有人在地址栏中输入this2或点击this2链接.
>服务器看到了对this2的请求
> Server有一组规则可以在内部重写从this2到this1的请求
> this1被提供给浏览器

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

很多时候,特别是在这里,人们会问“我想把这个网址更改为此网址”,或者在有两步重定向过程时要求重写.这是第2步(你根本就没有要求),它接受this1并将浏览器重定向到this2,以便url地址栏变为this2:

>有人在地址栏中输入this1或点击this1链接.
>服务器看到对此1的请求
>服务器有一组规则,用于将浏览器从外部重定向到this2.
>浏览器的地址栏现在说明了这个2
>浏览器请求this2
>服务器看到了对this2的请求
> Server有一组规则可以在内部重写从this2到this1的请求
> 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} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]+)/(.+)/$/profiles/tutors/index.php?tutorCode=$1&tutorName=$2 [L,QSA]

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

转载注明原文:.htaccess – 将原始URL转换为友好URL - 代码日志