0

我试图配置一个 .htaccess RewriteRule 并且我正在努力。

我有一个域www.domain.com

我正在尝试添加这些条件。

我正在尝试www.domain.com/.htaccess

if URL is www.domain.com with no path to file, redirect to www.domain.co.uk

if URL is www.domain.com AND has a path to file, no rewrite, allow.

if URL is www.domain.com AND has a path to file AND file doesnt exist, return 404

if URL points to a directory, return access forbidden

他们是我的要求。

我已经尝试了很多东西。这是我的.htaccess

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.co.uk/$1 [R=301,L]

此代码满足第一个约束。

但是我不知道如何检查路径是否存在,路径是否有效,或者它是否是目录。

一个完美的答案将是满足所有约束的代码并解释它是如何工作的。

我阅读 mod_rewrite 文档的次数比我愿意承认的要多:'(

4

1 回答 1

1
# Make sure / redirected to other domain
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC]
RewriteRule ^/$ http://www.domain.co.uk [R=301,L]

# Make sure directory listings are forbidden
Options -Indexes

请注意,您可以使用RedirectMatch,在这种情况下,这实际上优于重写

并且在您的情况下根本不需要处理文件 - 如果 URI 不是 /,则规则不适用,并且将执行常规文件处理(如果未找到 404 错误等...)

于 2012-06-20T14:33:24.340 回答