我收到原始网址: 的 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
所以,上面的两个url引用同一页面......对! 现在真正的交易是,
为什么当我输入网址时,原始网址为
www.mydomain.com/menu/?myid=29&mypage=pizza-hut.html
它不会重定向到
www.mydomain.com/menu/29/pizza-hut.html
它将原来的一个保留在地址栏中,是否有我应该添加的行?
答案 0 :(得分:0)
基本上,您生成的所有链接都应该是不错的网址。在您的任何网页中都没有/menu/?myid=29&mypage=pizza-hut.html
之类的链接。使用您确保在后端正确路由的干净URL,如下所示:www.mydomain.com/menu/29/pizza-hut.html
您在服务器上重写的规则是您的内容能够理解的好看的网址(例如/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]
答案 1 :(得分:0)
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /menu/?\?myid=([^&]+)&mypage=([^&\ ]+)
RewriteRule ^menu/?$ /menu/%1/%2.\html? [R=301,L]
请注意?
.\html