重写规则存在问题

重写规则存在问题

我有一个应用程序,其中大部分仍处于开发阶段,这就是为什么我需要阻止所有页面的访问,但不仅仅是其中两个页面。

假设我有 a.php,除 b.php 之外的所有请求都将被重定向到这里。

所以我认为应该有3条规则:

1st: when a.php and b.php are requested they should be visible to user,

2nd: if anything other than those two is requested, 
     it should be redirected to a.php.

3rd: for external css,javascript and image files 
     there should be an access rule

由于我没有太多的服务器管理经验,所以我认为我完全迷失了:)

这是我尝试过的:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !^/b.php
RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ a.php

答案1

我不完全确定第 3 点中“应该有一个访问规则”是什么意思,所以我将其理解为“允许访问具有这些扩展名的文件”。

我认为这可以满足您的要求,但可能不是您想要的——您实际上将阻止除 JS/CSS/etc、a.php 和 b.php 之外的任何内容的访问,这可能没什么用。

# permit JS, CSS, etc
# - means don't rewrite the URL
# [L] means stop processing rules
RewriteRule \.(js|ico|txt|gif|jpg|png|css)$ - [L]

# Permit a.php and b.php
RewriteRule ^/[ab]\.php$ - [L]

# HTTP 302 redirect anything else to a.php
RewriteRule ^ http://your.server/a.php [R]

答案2

嗯,首先,您需要将 a.php 添加到 RewriteCond (a|b).php 中,否则您将创建一个无限循环,其中 a.php 始终重定向到其自身。

相关内容