0

我在这里查看了很多其他 mod_rewrite 问题并尝试了其中的大部分,但似乎没有一个对我有用。这就是我想做的。

  • 将所有请求重定向http://abc.com/foobarhttp://abc.com/

  • 除了imagesand , 所以像orjs这样的请求http://abc.com/images/foo/barhttp://abc.com/js/foo/bar

  • URL 栏应该保持不变。因此,在http://abc.com/foobar加载http://abc.com/时,URL 应该像以前一样读取

  • 端口应该保持不变,所以http://abc.com:8080/foobar应该重定向到http://abc.com:8080

这就是我.htaccess文件中的内容

Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(images/.*|js/.*)$
RewriteRule ^(.*)$ - [L]

条件运行良好,images文件js加载正常。我认为最后一行会将其他所有内容都重定向到基本域,但是当我测试它时我仍然收到 404 错误。

我不想使用这样的规则

RewriteRule ^(.*)$ http://abc.com/ [L]

因为域在不同的部署中可能不同。

我想我只是对它的工作原理知之甚少,但我只是缺少一些小东西。有人可以帮我解决这个问题吗?

4

1 回答 1

0

这就是我最终使用的

RewriteEngine On
RewriteCond %{REQUEST_URI} !^(/*|/index.html)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^[^\.]+$ index.html [L]

这并不完美,因为最后一条规则只查找其中没有点 (.) 的文件。所以它不适用于http://abc.com/images/image.jpg但将适用于http://abc.com/images.

我真的不明白为什么我必须这样做,但它确实有效。

于 2012-12-05T19:18:41.250 回答