0

您好我正在尝试确保我的所有网址都已更正为以正斜杠结尾,因此如果用户键入

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 变量之外,这个解决方案几乎可以完美地工作。所以当 url 有这样的 $_GET 变量时

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} 尝试了上述方法)

4

1 回答 1

1

这应该使得带有 a 的 URI^被忽略:

RewriteCond %{REQUEST_URI} !\^

但是它没有解决前面没有斜线的情况,这个单独的规则应该注意:

RewriteCond %{REQUEST_URI} [^/]\^
RewriteRule ^(.*)\^(.*)$ /$1/^$2 [L,R,NE]
于 2012-08-20T13:28:14.463 回答