0

我们的开发环境之一使用 Windows 7(使用 Apache 2.4.10)。我已经设置了 mod_rewrite,并创建了一个虚拟主机来指向我的project(可以访问project.local),但是.htaccess不能正常工作。当我去project.local/css/styles.css(这是一个现有的文件夹和文件)时,一切正常。但是当我尝试访问一个重写的 URL 时,就像project.local/account/login我看到一个 404 页面并且请求没有index.php按照内部定义的规则映射到.htaccess

如果我.htaccess故意写错文件内容并尝试访问project.local或现有文件,例如project.local/css/styles.css我收到内部服务器错误(如预期的那样),但是当我访问时project.local/account/login,404 错误继续存在,这意味着它.htaccess被忽略了。

未找到错误日志。

C:/xampp/apache/conf/httpd.conf

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

DocumentRoot "C:/xampp/htdocs"

<Directory "C:/xampp/htdocs">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>

LoadModule rewrite_module modules/mod_rewrite.so

C:/xampp/apache/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin webmaster@project.local
    DocumentRoot "C:/xampp/htdocs/project/webroot"
    ServerName project.local
    ServerAlias project.local
    ErrorLog "logs/project.local-error.log"
    CustomLog "logs/project.local-access.log" common
</VirtualHost>

C:/xampp/htdocs/project/webroot/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

你能看出有什么不对吗?我花了将近一天的时间没有成功。

4

2 回答 2

2

您在 VirtualHost 文件中声明了不同的文档根目录。这可能会导致一些问题。

尝试将您的 VirtualHost 更改为此,然后重新启动 Apache 服务。然后检查你的重写规则。

<VirtualHost *:80>
    ServerAdmin webmaster@project.local
    DocumentRoot "C:/xampp/htdocs/project/webroot"
    ServerName project.local
    ServerAlias project.local
    ErrorLog "logs/project.local-error.log"
    CustomLog "logs/project.local-access.log" common
   <Directory "C:/xampp/htdocs/project/webroot">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
   </Directory>
</VirtualHost>

或者您可以尝试更改您的重写库。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /project/webroot

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>
于 2015-01-07T17:51:45.143 回答
0

一些别名内部C:/xampp/apache/conf/extra/与我的应用程序路线冲突。我已经删除了这些不必要的别名,一切正常!

<IfModule alias_module>
    Alias /account "C:/xampp/account-system/htdocs"

    [...]
</IfModule>

谢谢!

于 2015-01-07T19:50:27.773 回答