0

对不起,如果标题令人困惑。

我已经在我的本地机器上设置了一个虚拟主机。我已经设置http://dev映射到我的/htdocs/dev文件夹。在dnsmasq.htaccess的帮助下,我进行了设置,以便将 的子域映射.dev到 .htaccess 中的文件夹/htdocs/dev。当我尝试访问时,这一切都很完美,例如,http://dev/file1.htmlhttp://folder.dev/file2.html. 访问子文件夹时会出现问题。如果我404 Object not found尝试访问http://folder.dev/subfolder/http://folder.dev/subfolder/file3.html.

我想它可以用.htaccess来解决,但我试过了,但我没能做到。这是我的/htdocs/dev/.htaccess样子:

# Default index file
  DirectoryIndex index.php

# Interpret .html files as .php scripts
  AddHandler php5-script .php .html

# Redirect subdomains to their respective folders
  RewriteEngine on
  RewriteBase /

  RewriteCond %{HTTP_HOST} !^www\.dev$ [NC]
  RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.dev$ [NC]
    RewriteRule !^([a-z0-9-]+)($|/) /%2%{REQUEST_URI} [PT,L]

我应该提到,如果我尝试访问http://dev/folder/subfolder/file3.html,没有问题。

如何设置诸如http://folder.dev/subfolder/指向的地址/htdocs/dev/folder/subfolder

4

2 回答 2

0

首先,感谢@JonLin 给了我这个提示。

我已经设法用这个 .htaccess 文件解决了这个问题:

# Ordered list of index files, if none exist, show directory listing
  DirectoryIndex index.php index.html

# Interpret .html files as .php scripts
  AddHandler php5-script .php .html

# Redirect subdirectories to their respective folders
  RewriteEngine on
  Options +FollowSymlinks
  RewriteBase /

  RewriteCond %{HTTP_HOST} !^www\.dev$ [NC]
  RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.dev(.*)?$ [NC]
  RewriteRule !^%2\.dev%3?/$ http://dev/%2%{REQUEST_URI}/ [P]

Rewrite 部分所做的是它采用http://folder.dev/subfolder形式的 URL,并将其指向 /dev/folder/subfolder,同时保留 URL。无论有无 www,它都适用。

于 2012-09-22T21:14:01.137 回答
0

尝试将您的规则更改为:

RewriteCond %{HTTP_HOST} !^www\.dev$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.dev$ [NC]
RewriteCond %{DOCUMENT_ROOT}/%2{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/%2{REQUEST_URI} -d
RewriteRule ^ /%2%{REQUEST_URI} [PT,L]
于 2012-09-22T17:52:06.887 回答