0

我得到一个原始网址www.mydomain.com/menu/ ?myid=29&mypage=pizza-hut.html

使用以下 mod_rewrite 代码:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^menu/([^/]*)/([^/]*)\.html$ /menu/?pid=$1&alias=$2 [L]

我得到了这个不错的网址: www.mydomain.com/menu/29/pizza-hut.html

所以,上面的两个网址都引用了同一个页面......对!现在真正的交易是,

为什么当我输入网址时,原来的:

www.mydomain.com/menu/?myid=29&mypage=pizza-hut.html

它不会重定向到

www.mydomain.com/menu/29/pizza-hut.html

它在地址栏中保留了原来的那个,我应该添加任何行吗?

4

2 回答 2

0

本质上,您生成的所有链接都应该是不错的 url。不要/menu/?myid=29&mypage=pizza-hut.html在您的任何页面中都有链接。使用您已确保在后端正确路由的干净 URL,如下所示:www.mydomain.com/menu/29/pizza-hut.html

您在服务器上重写的规则将漂亮的 url 改写为您的内容可以理解的内容(例如/menu/?myid=29&mypage=pizza-hut.html)。这是最重要的部分。如果您想更正所有对丑陋 URL 的直接请求,您需要首先确保您的所有页面都开始使用漂亮的页面,然后您可以执行以下操作:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /menu/?\?myid=([^&]+)&mypage=([^&\ ]+)
RewriteRule ^menu/?$ /menu/%1/%2? [R=301,L]
于 2012-08-01T10:01:24.887 回答
0
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /menu/?\?myid=([^&]+)&mypage=([^&\ ]+) 
RewriteRule ^menu/?$ /menu/%1/%2.\html? [R=301,L]

注意?以下.\html

于 2012-08-02T04:33:07.893 回答