htaccess重写到具有异常的子目录

时间:2013-04-08 12:27:28

标签: .htaccess

我已经设置了GoDaddy共享主机帐户,不应该直接从服务器根运行脚本 - 脚本至少启动一个子目录。我也有子域也属于这个类别,因为我的服务器似乎只是将子域重写为选定的文件夹。

/root
  wordpress
  drupal
  app1
  subdomains
     sub1
     sub2
     sub3

我决定我想让www.mydomain.com启动wordpress - 所以在对SO进行了大量研究并测试了一些解决方案之后 - 这就是有效的htaccess。其他解决方案导致500服务器内部错误,我认为这是我的托管计划的限制。

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTP_HOST} ^www.mydomain.com$ [NC,OR]
  RewriteCond %{REQUEST_URI} !wordpress/
  RewriteRule ^(.*)$ wordpress/$1 [L]
</IfModule>

但是现在子域名不再起作用,而且从服务器错误消息The requested URL /wordpress/subdomains/sub1/ was not found on this server.可以看出,我的重写规则正在为子域名而努力。

我尝试在RewriteRule中添加RewriteCond %{REQUEST_URI} !subdomains但没有帮助。 同样RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d - 所有重写都停止工作。

如何修改规则以便不应重定向特定的目录/模式?或者,如果目录存在,它不应该重写?

2 个答案:

答案 0 :(得分:1)

尝试在之前添加此有关wordpress的规则:

RewriteRule ^subdomains - [L]

它应该简单地让以/subdomains开头的请求通过,而不进行任何重写。

答案 1 :(得分:1)

用以下内容替换您的重写规则:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ wordpress/$1 [L]

这将确保不对任何文件或目录进行wordpress/重定向。