在 Apache2 中使用 RewriteRule 例外允许访问除特定文件和文件夹之外的文件夹

在 Apache2 中使用 RewriteRule 例外允许访问除特定文件和文件夹之外的文件夹

我在将工作中的网站重定向到新 URL 时遇到了问题。网站的重定向工作正常。重定向的例外情况也有效。问题是我需要多个例外情况。我需要重定向整个网站除了用户目录和其他几个位置(整个文件夹和特定文件的混合。

以下是我所拥有的(可以起作用的):

RewriteEngine on
RewriteRule ^/~(.+) - [L]
RewriteRule ^(.*)$ http://www.domain.ca/department$1 [R=301,L]

它根本就拒绝忽视这些:

/somedir
/someotherdir/somefile.php

我尝试过这些的每个排列,但都没有成功:

RewriteRule ^/someotherdir/somefile.php - [L]
and
RewriteCond %{REQUEST_URI} !^/someotherdir/somefile.php

有人能让我脱离痛苦吗?

答案1

来自的 Apache2 代码片段此问答修改如下:

配置

<VirtualHost IP:80>
  RewriteEngine on
  RewriteCond %{SERVER_PORT} 80
  RewriteCond %{REQUEST_URI} !/somedir
  RewriteCond %{REQUEST_URI} !/someotherdir/somefile.php
  RewriteRule ^(.*)$ http://www.domain.ca/department$1 [R=301,L]
</VirtualHost>

检测结果

进行了一些测试,结果如下:

InputOutput
IPhttp://www.domain.ca/department/
IP/somedirIP/somedir
IP/someotherdir/somefile.phpIP/someotherdir/somefile.php
IP/helloworldhttp://www.domain.ca/department/helloworld

相关内容