如何解决.htaccess ModRewrite:找不到网址
我的目标是使用 .htaccess 将 http://ipaddress/directory/file.php?id=47
重定向到 http://ipaddress/directory/47
。 id 参数会有所不同,可以是任何数字字符串,如 1、2、3、10、20、300 等。我当前的 .htaccess 文件如下:
RewriteEngine on
RewriteCond %{QUERY_STRING} id=([0-9]+) [NC]
RewriteRule (.*) /directory/%1? [R=301,L]
重写确实将 url 更改为我想要的!但是我在被重定向后收到一个错误,其中指出,未找到 - 在此服务器上找不到请求的 URL。 我不确定为什么重定向有效,但没有加载上一个页面id 参数和实际 PHP 文件。
谢谢!
解决方法
对于您展示的样品,请尝试以下规则。确保您的 htaccess 存在于根文件夹中。在测试您的网址之前,请务必清除浏览器缓存。
##Making RewriteEngine ON here.
RewriteEngine on
##Checking condition if THE_REQUEST is in same format which OP has mentioned for URI and mentioning Rule then.
RewriteCond %{THE_REQUEST} \s/file\.php\?id=(\d+)\s [NC]
RewriteRule ^ /directory/%1? [R=301,L]
RewriteRule ^directory/(\d+)/?$ /directory/file.php?id=$1 [NC,L,QSA]
,
您需要对
进行内部重写RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} id=([0-9]+) [NC]
RewriteRule ^file\.php$ /directory/%1? [R=301,NC]
RewriteRule ^directory/(\d+)/?$ /directory/file.php?id=$1 [L,QSA,NC]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
条件用于确保从上一个规则重写后,在 mod_rewrite
的下一个循环中不执行重定向规则。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。