在我的.htaccess文件中,我已经定义了以下规则,使我的注册页面的URL为http://example.com/register/
RewriteRule register/ /register.php
上述规则是完全正确的,但我可以从http://example.com/register/
以及从http://example.com/register.php
访问我的注册页面。
我不希望该用户将能够访问http://example.com/register.php
URL的URL,是否有任何规则,我可以在.htaccess中定义,以停止执行register.php的URL或只是redirect任何直接register.php请求/注册/
如果你这样做,以避免获得多个链接到相同的内容,你可以简单地不使用“register.php”在你的网页上的任何地方。 我认为没有搜索引擎会“猜测”某个文件类型,如果没有安全问题,你是安全的,因为在我看来,没有用户会链接到这个文件。 然而,如果你想确定只是通过一个index.php通过你的.htaccess应该被放置在你的www根目录中的一行重新路由所有的功能:
RewriteEngine on RewriteRule ^(.*?)$ index.php?file=$1
在你的index.php中,你可以简单地选择打开并检查$ _GET [“file”]参数来调用哪个函数/文件。 为了100%确定没有人可以直接访问你的register.php文件,只要将它(和你所有的其他人)移动到一个单独的目录,并包含一个.htaccess文件,下面一行:
DENY from all
还有其他一些选项可以防止直接访问。 只需在index.php中的某个地方define()
一个变量,然后在register.php的顶部添加一个变量即可
defined('access') or die('Intruder alert!');
在顶部。 另一种方式可能是诚实的,只是告诉搜索引擎你的内容已被移动,他们不再使用旧的链接:
header("Status: 301"); /* Content moved permanently */ header("Location: http://yourserver/Register/"); exit;
更新
还有一件事是我想到的,你也可以检查$_SERVER["REQUEST_URI"]
,无论用户是否附加任何“.php”,并通过完全拒绝访问或只是重定向到新的位置来采取相应的行动。
确实,您不能使用位置指令,但实际上可以将.htaccess文件粘贴到任何目录中。
只要你把它放进去,就说:
Options -Indexes order allow,deny deny from all
你可以复制粘贴这个文件到任何(根)目录你想保护免受外部执行。
要检查初始请求的URL路径,您需要使用请求行 。 所以试试这个规则:
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php[/?\s] RewriteRule (.+)\.php$ /$1 [L,R=301]
然后你的规则(稍作修改):
RewriteRule ^register/$ register.php
尝试这个。
RewriteCond %{REQUEST_FILENAME} ^register\.php$ [NC] RewriteRule ^/register register.php
或这个
Redirect register.php /register
忽略用户体验部分,你可以实现新的rel = canonical链接来整理搜索引擎。
虽然,对于这种情况下,你应该可以使用301从/register.php重定向到/ register /
在register.php
if ( stristr( $_SERVER['REQUEST_URI'], '.php' ) ) { header ('HTTP/1.1 301 Moved Permanently'); header ('Location: /register'); }
如果你想通过使用mod_rewrite
完全阻止/register.php,请使用SleepyCod的一个变体的答案:
RewriteCond %{REQUEST_FILENAME} register\.php [NC] RewriteCond %{IS_SUBREQ} false RewriteRule .* - [F,L]
说明:
[NC]
:使条件不区分大小写,以防万一您在Windows窗口中。 [F]
:发送一个403 Forbidden头, [L]
:这是最后一个应用规则,跳过所有后面的重写规则 正确重写本身就是一门艺术。 我建议你仔细阅读http://httpd.apache.org/docs/2.2/rewrite/ 。
干杯,