我正在尝试设置我的.htaccess来重定向任何直接转到我的index.php但没有有效查询字符串的流量。
当我说有效时,我的意思是:/index.php?page = home
因此,如果他们直接转到index.php,它将重定向到/
这是我的.htaccess
options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([/a-zA-Z0-9_\-]+)(/|)$ /index.php?page=$1$2 [QSA,L]
我不确定它可能吗?
答案 0 :(得分:1)
你应该能够做到这一点。检查是否有任何查询,然后重定向到root。那应该是最简单的形式。这提供了所有链接都有查询字符串。
RewriteCond %{QUERY_STRING} !.
RewriteRule ^index\.php$ / [R=301,L]
答案 1 :(得分:0)
试试这个:
RewriteRule ^index\.php / [NC,QSA,L]
应该做
答案 2 :(得分:0)
我认为使用Apache RewriteRule你不能匹配查询字符串(接下来会发生什么?)
page.html中一个= 2&安培; B = 5
部分?a = 2& b = 5无法与Apache RewriteRule匹配。您只能匹配page.html,并且可以选择使用QSA标志包含/启用查询字符串。否则,将忽略查询字符串。
RewriteRule ^ page.html my-page.php [QSA]
然后你可以使用parse_url()或只需$ _GET从PHP读取查询字符串。
答案 3 :(得分:0)
这将需要一个查询字符串,并且所请求的页面是''或'index.php'。如果是这种情况,它将重定向到a.php。
options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{REQUEST_FILENAME} ^(index.php|)$
RewriteRule .* a.php [R=301,L]