【问题标题】:HTACCESS Trailing Slash + Empty GET VarHTACCESS 尾部斜线 + 空 GET Var
【发布时间】:2015-07-16 21:42:55
【问题描述】:

我对 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

【问题讨论】:

标签: php apache .htaccess mod-rewrite


【解决方案1】:

您是否知道 htaccess 的性能问题?

$_GET[] 是特定于协议的,而 $_REQUEST[] 不关心 reg get v post。

这样您就可以处理丢失的输入

<code>
if ( empty($_REQUEST[]) ) {
   // some error logic
} else
   // process the CGI inputs
}
</code>

btw:最奇怪的是 CGI 程序在没有任何输入的情况下被调用。 IMO 前端应该通过 onSubmit() 捕捉到这一点,并且白白地避免了往返。

【讨论】:

    猜你喜欢
    • 2023-01-14
    • 2016-06-06
    • 2012-08-03
    • 2015-01-15
    • 2017-08-09
    • 2018-07-30
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    相关资源
    最近更新 更多