htaccess规则从子域重定向但保留一些文件可访问

时间:2015-01-16 18:09:01

标签: php .htaccess mod-rewrite

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
AddType application/x-httpd-php .htm .xml .rss
Options Indexes
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{REQUEST_URI} !index\.php
RewriteCond %{HTTP_HOST} ^(.+?)\.mysite\.net$
RewriteRule .* /index.php?sitename=%1 [L]

Options +FollowSymLinks

我的htaccess文件是怎样的。我希望所有subdomain.mysite.com都使用子域名重定向到我的索引文件,以便我可以显示相应的站点。那个工作正常,到目前为止......

我的问题是我现在需要直接访问www.mysite.com/script.php,我收到500错误。 htaccess对我很困惑,我怎么做到这一点?谢谢!

1 个答案:

答案 0 :(得分:1)

您需要将这3行添加到现有规则中:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

所以最终规则看起来像这样:

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
AddType application/x-httpd-php .htm .xml .rss
Options Indexes
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{REQUEST_URI} !index\.php
RewriteCond %{HTTP_HOST} ^(.+?)\.mysite\.net$
RewriteRule .* /index.php?sitename=%1 [L]

Options +FollowSymLinks