1

例如,用户无法访问http://example.com/here,但可以访问添加更多内容的任何内容。一个例子是http://example.com/her?action=blah blah。

这样做的目的是防止通过直接访问页面来访问文件,但允许文件与添加的更多操作/链接一起使用。

我只想感谢大家的快速反应。根据我得到的答案,我使用了 php 并且它有效。

我使用了以下内容:

function access_granted(){
 global $pagenow;
 if(!isset($_GET['action']) && 'wp-login.php' == $pagenow ) {
  wp_redirect('http://example.com/');
  exit();
 }
}

不过,我确实有一个问题。我将 wp-login.php 网址更改为http://example.com/here而不是http://example.com/wp-login.php

我的问题是现在,函数 access_granted 不再起作用了。我的猜测是 $pagenow。

任何建议,例如如何检查 url/here 而不是 wp-login.php?

4

5 回答 5

2

如果您想采用 .htaccess 方式,请执行此操作。通过启用 mod_rewrite 和 .htaccess httpd.conf,然后将此代码放在您.htaccessDOCUMENT_ROOT目录下:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^here/?$ - [NC,L,F]

这将抛出禁止的错误,/here或者/here/但将允许/here?bar=fooURI 类型。

于 2013-04-01T18:04:33.930 回答
1

example.com/here 是由 PHP 脚本处理的吗?如果是这样,请在脚本开头进行输入验证,如果不符合要求,请提供错误页面或重定向(http://php.net/manual/en/function.http-redirect。 php ) 到另一个页面。

于 2013-04-01T17:54:06.590 回答
1

就在这里。你真的不需要处理htaccess,你可以用php来做。首先,您需要检查是否设置了所需的选项。例如,如果您有一个GET带有名称的属性,action您可以检查它是否使用isset函数设置。您还需要指定自定义 HTTP 403 页面并将用户重定向到该页面。action这是一个在未定义时显示禁止错误的示例:

<?php
if (!isset($_GET['action'])) {
   header('HTTP/1.0 403 Forbidden',403);
   header('Location: 403.html');
   exit;
}
?>

您可能还会发现以下链接很有用: How to display Apache's default 404 page in PHP

于 2013-04-01T18:00:31.223 回答
1

如果您希望它在任何附加到 URL 的情况下工作,您可以在 /here 由 PHP 处理时使用它:

 <?php
  if(!$_GET){
         die('You are not allowed to access this URL.');
   }
   else {
     ... PHP code that will execute in case the user is allowed to access the URL(you can also use HTML by just having ?> here instead and add <?php } ?> at the end of the document)  ...
  }
 ?>

希望它有所帮助。

于 2013-04-01T18:14:50.830 回答
0

当然,您可以为此使用 PHP。在 here.php 上,您需要在代码顶部有一行(在您的示例中),如下所示:

if(!isset($_GET['action']){
     header('location:/notallowed.php');
     exit;
}

notallowed.php 是当他们没有完整链接时您想要显示的任何内容。

于 2013-04-01T17:57:27.457 回答