Htaccess重定向重写不能一起工作


Htaccess Redirect Rewrite Not working together

我想使用Htaccess从url中删除查询字符串,我使用以下代码更改url,它确实如此,但在重定向到该url后,我得到404错误。还有一个重写语句,如果我只使用它,那么新的url工作没有404错误,但旧的url不会自动重定向到新的url。

这里是我要修改的html和url

Options FollowSymLinks
Options -MultiViews
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/profile'.php$
RewriteCond %{QUERY_STRING} ^user_id=([0-9]*)$
RewriteRule ^(.*)$ http://www.meenmipage.com/user/%1? [R=302,L,NC]

实际Url为:

http://www.meenmipage.com/profile.php?user_id=2

,修改为:

http://www.meenmipage.com/user/2

如果我删除上面的代码,只是像这样使用重写语句:

RewriteRule ^user/([^/]*)$ /profile.php?user_id=$1 [NC,L]

则修改后的url有效,旧的url也有效

请告诉我该怎么办?

我认为你需要删除这行末尾的$:

RewriteCond %{REQUEST_URI} ^/profile'.php

,因为如果请求URI有user_id=2,那么这个条件将不匹配

Try This !
-----------
Options -MultiViews
Options +FollowSymlinks
RewriteEngine on
rewritecond %{QUERY_STRING} ^user_id=([0-9]*)
rewritecond %{http_host} ^www.meenmipage.com [nc]
RewriteRule ^([0-9]+)$ //www.www.meenmipage.com?user_id=$1 [L,QSA]