您好我正在尝试确保我的所有网址都以正斜杠结尾,以便用户输入
http://www.mydomain.com/blogPost
它会变成
http://www.mydomain.com/blogPost/
我在这里找到了这个问题的答案How can I force some pages to end in a slash [.htaccess](谢谢Andrew G. Johnson)。
除了$ _GET vars之外,这个解决方案几乎完美无缺。所以当url有像这样的$ _GET vars
时http://www.mydomain.com/blogPost/^start=10
htaccess将其重写为
http://www.mydomain.com/blogPost/^start=10/
会导致错误。
从堆栈溢出问题复制的原始代码如下所示
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [L,R=301]
所以当有$ _GET变量时让htaccess忽略url我尝试在上面的代码中添加一个RewriteCond来检查REQUEST_URI是否为^(因为在这个网站上$ _GET变量以^而不是?开头)我尝试了以下所有但没有任何作用。任何人都可以指出我正确的方向
RewriteCond %{REQUEST_URI} [^\^]
RewriteCond %{REQUEST_URI} ![^\^]
RewriteCond %{REQUEST_URI} ^(.*[^\^])
(我也尝试过使用{QUERY_STRING})
答案 0 :(得分:1)
这应该使得^
的URI被忽略:
RewriteCond %{REQUEST_URI} !\^
但是当它之前没有斜线时它没有解决,这个单独的规则应该照顾:
RewriteCond %{REQUEST_URI} [^/]\^
RewriteRule ^(.*)\^(.*)$ /$1/^$2 [L,R,NE]