我一直在努力尝试。
如果有人去:
www.domain.nl/vereniging
内部页面请求:
www.domain.nl/?p=vereniging
为此我用这个:
RewriteCond %{QUERY_STRING} !(p=.*)$
RewriteRule ^(.+)$ ?p=$1 [NC]
如果用户访问:
www.domain.nl/?p=vereniging
我希望将用户重定向到:
www.domain.nl/vereniging
为此我使用:
RewriteCond %{QUERY_STRING} ^p=(.*)$ [NC]
RewriteRule ^$ http://www.domain.nl/%1? [NC,R=301]
(如果我在此之前放了 RewriteCond%{REQUEST_FILENAME}!-d ,它就不再重定向。这很奇怪,因为查询不是目录吗?)
另外,这2个代码块也可以工作。
但是,如果我把它们放在1 .htaccess中它会引发循环。我不明白这一点,因为条件应该阻止循环。
答案 0 :(得分:0)
尝试将END标志应用于第一个或第二个RewriteRule。
在这里查看END标志:http://httpd.apache.org/docs/current/rewrite/flags.html
答案 1 :(得分:0)
您需要检查实际请求:
RewriteCond %{THE_REQUEST} \?p=([^&\ ]+)
RewriteRule ^ /%1? [L,R=301]