Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess mod_rewrite不适用于特定目录_.htaccess_Mod Rewrite - Fatal编程技术网

.htaccess mod_rewrite不适用于特定目录

.htaccess mod_rewrite不适用于特定目录,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,这让我完全困惑了好几天,我相信一旦我解决了它,我会显得很愚蠢,但如果我现在不寻求帮助,我会变得更愚蠢 我已经在本地主机上成功完成了mod_rewrite,没有涉及vhost;这是我的笔记本电脑,我的开发机器,我在不同的目录中使用.htaccess来帮助重写粗糙的URL,使之干净。除了它不能在一个目录中工作。因为在这个问题上不可能复制我的整个笔记本电脑,所以我提供以下细节 在我的httpd.conf中,我加载了mod_rewrite.so LoadModule rewrite_module mod

这让我完全困惑了好几天,我相信一旦我解决了它,我会显得很愚蠢,但如果我现在不寻求帮助,我会变得更愚蠢

我已经在本地主机上成功完成了mod_rewrite,没有涉及vhost;这是我的笔记本电脑,我的开发机器,我在不同的目录中使用.htaccess来帮助重写粗糙的URL,使之干净。除了它不能在一个目录中工作。因为在这个问题上不可能复制我的整个笔记本电脑,所以我提供以下细节

在我的httpd.conf中,我加载了mod_rewrite.so

LoadModule rewrite_module modules/mod_rewrite.so
在我的httpd.conf中,我包含了另一个类似这样的conf文件

Include /usr/local/apache2/conf/other/punkish.conf
在我的punkish.conf中,我有这样定义的目录

DocumentRoot "/Users/punkish/Sites"
<Directory "/Users/punkish/Sites">
  Options ExecCGI
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

<Directory "/Users/punkish/Sites/one">
  Options FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

<Directory "/Users/punkish/Sites/two">
  Options FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>
而且,一切正常。但是,在我的目录~/Sites/two中,我有以下.htaccess文件

RewriteEngine On
RewriteBase /one/

# If an actual file or directory is requested, serve directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Otherwise, pass everything through to the dispatcher
RewriteRule ^(.*)$ index.cgi/$1 [L,QSA]
RewriteEngine On
RewriteBase /two/

# If an actual file or directory is requested, serve directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Otherwise, pass everything through to the dispatcher
RewriteRule ^(.*)$ index.cgi/$1 [L,QSA]
而且,什么都不管用。娜达。拉链废话。我刚拿到404。我已经确定mod_rewrite甚至没有查看我的~/Sites/two/.htaccess,它在其中放入了伪命令,并且没有得到除404之外的任何错误

另一个令人困惑的问题是,我在httpd.conf中用RewriteLogLevel 3打开了RewriteLog,但我的rewrite_日志完全是空的。我知道这很难解决问题,除非坐在电脑前,但我希望有人能告诉我发生了什么


**更新:**任何地方都没有涉及别名。这是我的笔记本电脑,所有内容都在上面提到的文档根目录下,所以我只需访问每个目录即可。是的,拼写错误是一个很大的可能性。我说过,一旦我解决了它,我会看起来很愚蠢。然而,现在,我还没有在任何地方发现一个拼写错误,是的,我已经重新启动Apache大约十几次了。我甚至认为可能我有两个不同的Apache在运行,但没有,我只有一个,在/usr/local/apache2下,不久前我自己安装了它。

在这里,您所描述的一切都有一个外部因素,这使情况变得混乱;具体来说,像别名之类的东西会导致对/two的请求转到~punkish/Sites/two以外的地方。

仔细检查verrry是否有拼写错误,尤其是在目录名中。另外,重新启动apache: