HTACCESS Trailing Slash + Empty GET Var

时间:2015-07-16 21:42:55

标签: php apache .htaccess mod-rewrite

我是HTACCESS命令行的新手。我遇到了一些问题

1.当没有输入GET []变量时,页面会重定向到错误页面,但是在我的php代码中我有一个默认函数来覆盖它。如何防止这种情况发生并仍然加载代码。
2.如何将带有错误链接的页面重定向到干净的链接。例如:adminpage.php -> admin/view/...
我看过这个重定向的讨论,但它似乎对我不起作用:Redirect *.php to clean URL
3.如果在具有空GET [] VAR的链接末尾没有尾部斜杠,则无法加载并重定向到错误页面。例如:/index/r/2 -> /index/r如何防止这种情况。

我已经查看了这个讨论的尾随斜杠,但这只对基本的缺失斜杠有帮助,而不是当GET []变量也丢失时... Htaccess: add/remove trailing slash from URL

# Follow Symbolic Links
Options +FollowSymLinks

# Turn Rewrite Engine On
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)/$ /$1 [L,R=301]

RewriteRule ^index/r/(\w*)$ /index.php?r=$1

RewriteRule ^index/r/(\w*)/(\w*)$ /index.php?r=$1&p=$2

RewriteRule ^admin/login$ /admin.php

RewriteRule ^admin/view/(\w*)$ /adminpage.php?p=$1

1 个答案:

答案 0 :(得分:0)

您是否了解htaccess的性能问题?

$ _ GET []是协议特定的,而$ _REQUEST []不关心reg post v。

所以你可以处理丢失的输入

<code>
if ( empty($_REQUEST[]) ) {
   // some error logic
} else
   // process the CGI inputs
}
</code>
顺便说一句:最奇怪的是CGI程序在没有任何输入的情况下被调用。 IMO的前端应该用onSubmit()捕获它,并避免往返旅行。