我从Gumbo用勺子喂这个htaccess文件,我很感激,因为我学到了很多东西。但是,我做了一些修改并且来回还是设法再次进行了一些小改动,它工作了80%但是有一些情况它不起作用:
如果我输入 http://www.example.com/view.php?t=45re ,它会成功重写,但会在网址http://www.example.com/中执行此操作**?t = ** 45我看不出那是怎么回事发生。再也非常感谢了。
# REWRITE DEFAULTS
RewriteEngine On
RewriteBase /
# /view.php?t=h5k6 externally to /h5k6
RewriteCond %{THE_REQUEST} ^GET\ /view\.php
RewriteCond %{QUERY_STRING} ^([^&]*&)*t=([^&]+)&?.*$
RewriteRule ^view\.php$ / [L,R=301]
# /h5k6 internally to /view.php?t=h5k6
RewriteRule ^([0-9a-z]+)$ view.php?t=$1 [L]
答案 0 :(得分:1)
不知道你的情况,也不知道Gumbo告诉你的是什么,从你的问题中我可以收集到什么(即你希望在外部重定向时不传递查询字符串),你可以
RewriteRule ^view\.php$ /? [L,R=301]
请注意额外的?或
RewriteRule ^view\.php$ / [L]
删除外部重定向并使用内部重定向。
答案 1 :(得分:1)
我认为你的意思是this post。而且我不得不承认,我忘记了替换中的空查询以覆盖它,就像Vinko已经提到的那样。
所以试试这个:
# /view.php?t=h5k6 externally to /h5k6
RewriteCond %{THE_REQUEST} ^GET\ /view\.php
RewriteCond %{QUERY_STRING} ^([^&]*&)*t=([^&]+)&?.*$
RewriteRule ^view\.php$ /%2? [L,R=301]
# /h5k6 internally to /view.php?t=h5k6
RewriteRule ^([0-9a-z]+)$ view.php?t=$1 [L]
%2
是对相应RewriteCond
指令模式的第二个分组匹配的反向引用。因此,在这种情况下,%2
会在([^&]+)
中保持^([^&]*&)*t=([^&]+)&?.*$
的匹配。