我在将工作中的网站重定向到新 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>
检测结果
进行了一些测试,结果如下:
Input
Output
IP
http://www.domain.ca/department/
IP/somedir
IP/somedir
IP/someotherdir/somefile.php
IP/someotherdir/somefile.php
IP/helloworld
http://www.domain.ca/department/helloworld