htaccess重写到子目录不工作

时间:2015-01-23 12:48:12

标签: php apache http web

一旦我再次提出这个问题,有些人可能会生气和烦恼,但在尝试了我在这里找到的所有答案之后我无法真正发挥作用,而且我也是这个问题的新手。无论如何,我有一个域名(www.testco.sample.com),我想重定向到子目录(/var/www/html/start/index.html),所以我修改了.htaccess并在下面添加以下行。

RewriteEngine on
RewriteRule ^$ start/index.html [L]

然而,当重新启动apache时,它不使用重写规则。我甚至试过下面的代码,但无济于事。

# .htaccess main domain to subdirectory redirect
# Do not change this line.
RewriteEngine on
# Change example.com to be your main domain.
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
# Change 'subdirectory' to be the directory you will use for your main domain.
RewriteCond %{REQUEST_URI} !^/subdirectory/
# Don't change the following two lines.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Change 'subdirectory' to be the directory you will use for your main domain.
RewriteRule ^(.*)$ /subdirectory/$1
# Change example.com to be your main domain again.
# Change 'subdirectory' to be the directory you will use for your main domain
# followed by / then the main file for your site, index.php, index.html, etc.
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ subdirectory/index.html [L] 

有人可以解释一下如何做到这一点吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

使用RewriteBase

# .htaccess main domain to subdirectory redirect
RewriteBase /foldername/
# Do not change this line.
RewriteEngine on
# Change example.com to be your main domain.
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
# Change 'subdirectory' to be the directory you will use for your main domain.
RewriteCond %{REQUEST_URI} !^/subdirectory/
# Don't change the following two lines.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Change 'subdirectory' to be the directory you will use for your main domain.
RewriteRule ^(.*)$ /subdirectory/$1
# Change example.com to be your main domain again.
# Change 'subdirectory' to be the directory you will use for your main domain
# followed by / then the main file for your site, index.php, index.html, etc.
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ subdirectory/index.html [L] 

答案 1 :(得分:0)

这很令人尴尬,但我的问题的解决方案非常简单,我不得不花费4-6小时搜索,排除故障,寻找答案(讽刺!)。什么解决了我的问题是一个单线

RedirectMatch ^/$ /start/index.html

谢谢你的帮助!