在我的网站上有一个指向注册导师的链接。该链接是这样的http://www.myweb.com/profiles/tutors/index.php?tutorCode=1285&tutorName=Robert%20Sakoo&city=Sidny
因此,我需要重写此链接,如下所示:
www.myweb.com/1285/Rober Sakoo
有人可以告诉我是否可以将上述原始URL重写为我的预期URL?
最佳答案
您似乎对 URL 和重写的工作方式感到困惑。 “我需要将 this2 重写为 this1 ”的概念意味着:
请注意,所有这些中的重要概念是 浏览器请求“this2”链接 ,而 服务器内部将请求重写为“this1” 。但这可能根本不是你想要的,因为那样你就会把丑陋的 URL 重写为漂亮的 URL,有点错过了看起来友好的 URL。
很多时候,尤其是在这里,人们要求诸如“我想将此 url 更改为此 url”之类的内容,或者在有两步重定向过程时要求重写。这是第 2 步(您根本不需要),它将 this1 并将浏览器重定向到 this2 以便 url 地址栏更改为 this2 :
因此,当浏览器尝试转到 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 - 将原始网址转换为友好网址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11709634/