mod_rewrite不能同时工作

时间:2012-08-01 09:49:07

标签: apache .htaccess mod-rewrite url-rewriting

我收到原始网址: 的 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

它将原来的一个保留在地址栏中,是否有我应该添加的行?

2 个答案:

答案 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