在我的网站上有一个注册导师的链接。这个链接是这样的
http://www.myweb.com/profiles/tutors/index.php?tutorCode=1285&tutorName=Robert%20Sakoo&city=Sidny
所以我需要重写这样的链接:
www.myweb.com/1285/Rober Sakoo
有人可以告诉我是否可以将原始网址重写为我预期的网址?
答案 0 :(得分:13)
您似乎对URL和重写的工作方式感到困惑。 “我需要将 this2 重写为 this1 ”的概念意味着:
请注意,所有这一切中的重要概念是浏览器请求“this2”链接,服务器在内部将请求重写为“this1”。但这可能不是你想要的,因为那样你就会把丑陋的URL重写成漂亮的URL,而不是那些看起来很友好的URL。
很多时候,尤其是在这里,人们会问“我想将此网址更改为此网址”,或者在有两步重定向过程时要求重写。这是第2步(你根本不需要),它将 this1 和重定向浏览器转移到 this2 ,以便网址地址栏更改为 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中编码,因此它将作为查询字符串的一部分保留。您可以更改此设置,以便友好的网址如下所示:/id/name/city/
而不仅仅是/id/name/
,修改应该是微不足道的。
答案 1 :(得分:1)
那可能就在附近:
RewriteEngine on
RewriteRule ^([0-9]+)/(.+)$ /profiles/tutors/index.php?tutorCode=$1&tutorName=$2 [NC,QSA]
由于您没有指定如何处理它,我没有考虑您的city
参数,因此将QSA
(查询字符串追加)添加到规则中,因此GET中的参数是仍然传递给脚本。