我正在尝试配置.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文档的时间比我承认的要多:'(
答案 0 :(得分: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错误等等)< / p>